02-Python基础
文件编码
Python2中
在Python2中:默认文件编码是ASC II,所以无法正常输出中文,会报错。
- 解决办法
在文件的开头添加# -- coding: UTF-8 -- 或者 # coding=utf-8
Python3中
在Python3中:默认文件编码是UTF-8,所以无需指定编码
IDE中(如pyCharm)
如果你使用IDE,则需要设置 py 文件存储的格式为 UTF-8等支持中文的编码,否则会报错
- 解决办法
- File -> Settings -> 搜索encoding
- 将Global Encoding、Project Encoding和Default encoding for properties files都修改为UTF-8
注释
在python中,有三种注释的方式
- #单行注释
- ‘’‘多行注释’’’
- “”“多行注释”""
例如
'''
函数作用:
输出Hello world
'''
"""
作者:
张三
"""
print("Hello world") #输出Hello world
多行语句
单行语句分隔为多行
- 利用反斜杠 \ 分隔
a = 1 + \
2 + \
3 #相当于a = 1 + 2 + 3
print(a)
- 利用括号分隔
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
语句中包含 [], {} 或 () 括号就不需要使用多行连接符
在同一行写多条语句
print("Hello"); print("World")
可以在同一行写多条语句,语句之间用分号 ; 隔开
输入和输出
输入
name=input("Please input your name:") #input将用户输入的内容作为字符串接收
print("Your name is ",name)
结果:
Please input your name:张三
Your name is 张三
解释:
通过调用函数input()来得到用户输入
input函数中的参数为用户提示,若无需提示,则省略参数即可。
用户输入的内容将以String保存,即name的类型为String
如果需要得到其他类型,则需要强制转换
输出
- 普通输出
print("你好")
print("你好","中国") #输出"你好 中国"
print() #输出换行
print("你好",end="") #输出"你好",但不换行
解释:
- 默认情况下,输出后自动换行
- 如果只想输出换行,则
print()
即可- 如果不想输出换行,则在最后添加参数
end=""
将结束符修改为无
- 可以传入0到多个参数,参数的类型也无要求
- 参数之间会以空格分隔,依次输出
- 格式化输出
通过格式化输出,可以将格式和数据分开。
python的格式化输出和其他语言相同,使用%d等占位符指定数据的格式。
将格式与数据分开的好处是:
- 方便维护
- 代码可读性高
- 可以将数据按照不同格式输出(例如小数可精确到某一位)
示例:
name="张三"
age=18
sex="男"
msg='''
---------
name:%s
age:%d
sex:%s
---------
''' % (name,age,sex)
print(msg)
结果:
---------
name:张三
age:18
sex:男
---------
解释:
msg的类型为String。
代码中的%s、%d、%s为占位符,将会被后面的数据name、age和sex依次替换。
%s意为字符串,将会被替换为字符串的格式。
%d意为整数,将会被替换为整数的格式(若为小数,将会被取整)。
可以很直观地看到格式为:
---------
name:%s
age:%d
sex:%s
---------
整数占位符:
%d //输出十进制
%o //输出无符号整数的八进制
%x //输出无符号整数的十六进制(字母小写)
%X //输出无符号整数的十六进制(字母大写)
%5d //输出宽度为5(右对齐)
%-5d //输出宽度为5(左对齐)
%+5d //输出宽度为5(输出符号)
%05d //输出宽度为5(前面补0,而不是空格)
%#o //输出八进制前的0(进制前的标识符)
小数占位符:
%f //输出小数(保留到小数点后6位)
%e,E //科学计数法,保留到小数点后6位(1.234560e+02)
%g,G //以%f或%e中较短的输出宽度输出小数
%10f //输出宽度为10(多出不会被截断)
%10.3f //输出宽度为10(保留到小数点后3位)
字符占位符:
%c //输出单个字符
%s //输出字符串
其他占位符:
Python会将符号%和它后面的字符作为格式解析。
当我们需要输出%时
%% //输出%就需要转义,这样就可以得到%了,而不是将它解析为占位符
变量
变量命名规则
- 只能是数字、字母和_组成
- 不能以数字开头
- 不能以保留字命名
- 支持中文,但是不建议使用中文作为变量名
- 变量名区分大小写
- 没有常量,通常用全部大写命名来表示常量
良好的命名规范:
- 不使用中文作为变量名
- 定义的名称应该有意义
- 使用驼峰式命名、下划线分割单词
- 用全部大写命名来表示常量
赋值
a=1
a='abc' #原本是int类型,可以被赋值为String类型
a,b=3,4 #相当于a=3,b=4
t=(3,4)
a,b=t #相当于a=3,b=4
解释:
Python是一种弱类型语言,所以定义变量无需指定类型,Python将根据值的类型自动判断。
Python是一种弱类型语言,所以原本为int类型的变量,可以被赋值为其他类型。
a=3,b=4这种形式的赋值可以写为a,b=3,4
赋值时,变量和内存空间的关系是怎样的?
Python为了节约内存,只会保留一份常量,即不同的变量如果内容相同则指向同一常量。
当其中一个变量内容改变时,就会指向新的内存空间。
a="变量1"
b="变量1"
b="变量2"
a和b的内容一开始是相同的,而且都是常量。所以它们指向同一内存空间。
当b的内容改变,变成另一个常量"变量2",它就会指向新的内存空间。
用运算符is或is not可以验证以上说法。
删除变量
a=1 #定义变量a
del a #删除变量a
#print(a) #报错
del专门用于删除变量
变量删除之后,若被调用则报错:not defined
运算符
算术运算符
假设变量: a=10,b=20
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | a + b 的结果 30 |
- | 减 | a - b 的结果 -10 |
* | 乘 | a * b 的结果 200; “Hello” * 2的结果为HelloHello |
/ | 除 | b / a 的结果 2 |
% | 取模 - 返回除法的余数 | b % a 的结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方,输出结果 100000000000000000000 |
// | 整除(平板除) - 返回商的整数部分(向下取整) | 9//2的结果为4; -9//2的结果为-5 |
比较运算符
假设变量: a=10,b=20
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 | (a == b) 返回 False。 |
!= | 不等于 | (a != b) 返回 true. |
> | 大于 | (a > b) 返回 False。 |
< | 小于 | (a < b) 返回 true。 |
>= | 大于等于 | (a >= b) 返回 False。 |
<= | 小于等于 | (a <= b) 返回 true。 |
赋值运算符
假设变量: a=10,b=20
运算符 | 描述 | 实例 |
---|---|---|
= | 普通赋值运算符 | c = a + b ,将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
逻辑运算符
在Python中,逻辑运算符有三个:and、or和not。
它们分别是短路与、短路或、非。重点在短路二字。
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 短路与 |
or | x or y | 短路或 |
not | not x | 非 |
and真值表:
逻辑表达式 | 结果 |
---|---|
True and True | TRUE |
True and False | FALSE |
False and True | FALSE |
False and False | FALSE |
or真值表:
逻辑表达式 | 结果 |
---|---|
True or True | TRUE |
True or False | TRUE |
False or True | TRUE |
False or False | FALSE |
not真值表:
逻辑表达式 | 结果 |
---|---|
not True | FALSE |
not False | TRUE |
什么是短路?
在and中:
表达式3 = 表达式1 and 表达式2
当表达式1为False时,表达式3一定为False,那就不必计算表达式2。
在or中:
表达式3 = 表达式1 or 表达式2
当表达式1为True时,表达式3一定为True,那就不必计算表达式2
所以:
当通过表达式1可以得出结论时,就不会去计算后面的表达式(被忽略掉)。
例如:
False and print("Hello") #无任何输出
True and print("Hello") #输出Hello
is、is not
- is和is not用于判断两个变量的地址是否相同
- 和==不一样,==用于判断两个变量的内容是否相同
例如:
a=[1,2]
b=[1,2]
print(a is b) #False
print(a == b) #True
解释:
a和b为引用类型(类似于C++中的指针),所以a和b虽然内容相同,但地址不同。
在前面的例子中:
a="变量1"
b="变量1"
a和b为基本数据类型,指向常量。所以a和b不仅内容相同,地址也相同。
位运算符
按位运算符是把数字看作二进制来进行计算的。
- 这里假设a=60,b=13。则二进制如下:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与 | (a & b) 输出结果 12 二进制解释: 0000 1100 |
| | 按位或 | (a | b) 输出结果 61 二进制解释: 0011 1101 |
^ | 按位异或 | (a ^ b) 输出结果 49 二进制解释: 0011 0001 |
~ | 按位取反 | (~a ) 输出结果 -61 二进制解释: 1100 0011 一个有符号二进制数的补码形式 |
<< | 左移动运算符 高位丢弃,低位补0 |
a << 2 输出结果 240 二进制解释: 1111 0000 |
>> | 右移动运算符 低位丢弃,高位补0 |
a >> 2 输出结果 15 二进制解释: 0000 1111 |
运算符优先级
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ | 按位翻转 |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
流程控制语句
三大结构
计算机语言的三大结构:
顺序结构、分支结构和循环结构
分支结构-if语句
if a>b:
print("a>b")
print("a大于b")
elif a<b:
print("a<b")
print("a小于b")
else:
print("a=b")
print("a等于b")
每个条件后面,必须以冒号 : 结尾
利用缩进来分隔代码块
循环结构-while语句
while a>b:
a-=1 #语句1
print("xxxxx1") #语句1
else:
print("xxxxx2") #语句2
解释:
条件后需要以冒号 : 结尾
当条件成立时,循环执行语句1
当结束循环时,执行语句2
else可以用来关闭文件,做一些结束操作
循环结构-for语句
for i in range(3):
print(i) #语句1
else:
print("This is the end") #语句2
解释:
函数range(3)将产生0、1、2的序列,即i的值依次等于0、1、2
只要是序列,就能被for遍历,String也可以。
当条件成立时,循环执行语句1
当结束循环时,执行语句2
同样,else可以用来关闭文件,做一些结束操作
循环结构-break
break用于跳出当前循环
for i in range(5):
if i==3:
break
print(i)
结果:
0
1
2
解释:
range(5)
会产生0、1、2、3、4
序列, i 会依次遍历它们。
当 i 等于3时,跳出循环,所以不会输出3和4
循环结构-continue
continue语句会跳过后面的语句,继续循环
for i in range(5):
if i==3:
continue
print(i)
解释:
range(5)
会产生0、1、2、3、4
序列,i 会依次遍历它们。
当 i 等于3时,跳过语句print(i),所以不输出3,继续进行循环,再输出剩下的4后结束循环。
条件语句
在Python中,可以使用a>b>c形式的条件语句。
在分支语句和循环语句中都可以使用这种形式。
示例:
a=3
b=2
c=1
if a>b>c:
print("a>b>c")
解释:
当a>b,b>c时才会满足条件
02-Python基础的更多相关文章
- 02.python基础知识_02
数据类型 1.整型 2.布尔值 3.字符串 4.列表 5.字典 6.集合 1.int(整型) i = 2 print(type(i)) 输出:<class 'int'> 2.bool(布尔 ...
- day 02 python 基础
1.day1作业讲解 题目答案见day1 2.格式化输出 %占位符,s:字符串,d:数字 %%只是单纯的显示%(显示的%是后面的) #格式化输出 # % s d # name = input('请输入 ...
- python基础之02列表/元组/字典/set集合
python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...
- Python基础教程-02
<Python基础教程> 第3章 使用字符串 字符串方法find返回的并非布尔值.如果find像这样返回0,就意味着它在索引0处找到 了指定的子串 join可合并一个字符串列表,不能合并数 ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- python基础——类和实例
python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...
- python基础——使用模块
python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...
- 第一篇:python基础
python基础 python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...
- python基础教程
转自:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html Python快速教程 作者:Vamei 出处:http://www.cn ...
- Python基础-week05
本节大纲:Author:http://www.cnblogs.com/Jame-mei 模块介绍 time & datetime模块 random os sys shutil json &am ...
随机推荐
- dotnet 使用 ConfigureAwait.Fody 库设置默认的 await 同步上下文切换配置
在 dotnet 里面,使用 await 进行异步逻辑,默认是会尝试切换回调用 await 的线程同步上下文.这个机制对于大多数的上层应用来说都是符合逻辑且方便的逻辑,例如对于带 UI 线程的 WPF ...
- k8s之dns问题
问题1: 描述:pod新建好后,无法ping通域名(无论是外网域名还是内网域名),但是可以ping通IP(包含外网IP和内网IP),不包括kube-dns的IP,和pod同一网段IP可以ping通 # ...
- Kafka源码分析(四) - Server端-请求处理框架
系列文章目录 https://zhuanlan.zhihu.com/p/367683572 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka. ...
- 06. rails gem 安装mysql
修改Gamefile Gamefile 里添加 gem 'mysql2' 执行命令行 bundle 可以看到下图片上已经安装好依赖了 修改配置文件 修改config/database.yml文件 # ...
- List<T> 根据对象中的属性处理数据
一.创建测试数据 UserEntity user1 = UserEntity.builder().id(1).name("张三").sex(0).build(); UserEnti ...
- Flutter 多线程实现
异步Isolate实现多线程 最近在看Flutter开发相关知识点,对照着Android原生,探究了下多线程实现方式.在Flutter中有 Isolate,隔离,它的实现原理并不是内存共享的,它更 ...
- web3.js:使用eth包
原文在这里 简介 web3-eth包提供了一套强大的功能,可以与以太坊区块链和智能合约进行交互.在本教程中,我们将指导您如何使用web3.js版本4的web3-eth包的基础知识.我们将在整个示例中使 ...
- 2022最新的Centos6.10安装mysql8.0
一.系统源替换 1.备份系统源 (1)进入源的默认路径 cd /etc/yum.repos.d (2)查看一下 (3)备份 cp CentOS-Base.repo CentOS-Base-Back.r ...
- MyBatis-Plus 实现多租户管理的实践
本文主要讲解使用Mybatis-Plus结合dynamic-datasource来实现多租户管理 在现代企业应用中,多租户(Multi-Tenant)架构已经成为一个非常重要的设计模式.多租户架构允许 ...
- SCSS随笔-mixin与@extend
变量 定义变量 $color-white: white; 使用变量 body { background-color: $color-white; } @mixin 与 @include 定义mixin ...