1 Python3 语法
1.1 基础语法
【编码】
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码。
【标识符】
1. 第一个字符必须是字母表中字母或下划线 _ 。
2. 标识符的其他的部分由字母、数字和下划线组成。
3. 标识符对大小写敏感。
备注:在 Python 3 中,非 ASCII 标识符也是允许的。
【单行注释】
Python中单行注释以 # 开头,实例如下:
# 第一个注释
print ("Hello, Python!") # 第二个注释
运行的结果:
Hello, Python!
【多行注释】
多行注释可以用多个 # 号,还有 ''' 和 """,实例如下:
# Python3学习
# 第三章
'''
本章学习Python的语法
'''
"""
本节课学习基础的语法:多行注释
"""
print ("I Like Python!...come on")
运行结果:
I Like Python!...come on
【等待用户输入】
执行下面的程序在按回车键后就会等待用户输入:
例子:
i=input("请输入i的值:")
print(i)
【行与缩进】
行与缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
例子一:
i=input("请输入i的值:")
i=int(i)
if i > 9:
print("True")
else:
print("False")
例子二:
【数字(Number)类型】
python中数字有四种类型:整数、布尔型、浮点数和复数。
1. int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
2. bool (布尔), 如 True。
3. float (浮点数), 如 1.23、3E-2
4. complex (复数), 如 1 + 2j、 1.1 + 2.2j
【字符串(String)】
.python中单引号和双引号使用完全相同。
.使用三引号('''或""")可以指定一个多行字符串。
.转义符 '\'
.反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
.按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
.字符串可以用 + 运算符连接在一起,用 * 运算符重复。
.Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
.Python中的字符串不能改变。
.Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
.字符串的截取的语法格式如下:变量[头下标:尾下标]
例子:
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""
【import 与 from...import】
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
【格式化输出】
最常用的格式化输出是字数的字符串,分别用(%d和%s)
例子:
name = input("Name=:")
age = int(input("Age=:"))
job = input("Job=:")
msn='''
----info------
Name: %s
Age: %d
Job: %s
you will be retired in %s years
'''%(name,age,job,65-age)
print(msn)
运行结果:
1.2 运算符
什么是运算符?
举个简单的例子 2 +3 = 5 。 例子中,2 和 3 被称为操作数,"+" 称为运算符。
下面介绍几种类型的运算符:
1.算术运算符
2.比较(关系)运算符
3.赋值运算符
4.逻辑运算符
5.运算符优先级
接下来让我们一个个来学习Python的运算符。
1.2.1 Python算术运算符
以下假设变量a为10,变量b为21:
例子:
a = 21
b = 10
c = 0
c = a + b
print ("1 - c 的值为:", c)
c = a - b
print ("2 - c 的值为:", c)
c = a * b
print ("3 - c 的值为:", c)
c = a / b
print ("4 - c 的值为:", c)
c = a % b
print ("5 - c 的值为:", c)
# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print ("6 - c 的值为:", c)
a = 10
b = 5
c = a//b
print ("7 - c 的值为:", c)
运行结果:
1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2
3.2.2 Python比较运算符
以下假设变量a为10,变量b为20:
例子:
a = 21
b = 10
c = 0
if ( a == b ):
print ("1 - a 等于 b")
else:
print ("1 - a 不等于 b")
if ( a != b ):
print ("2 - a 不等于 b")
else:
print ("2 - a 等于 b")
if ( a < b ):
print ("3 - a 小于 b")
else:
print ("3 - a 大于等于 b")
if ( a > b ):
print ("4 - a 大于 b")
else:
print ("4 - a 小于等于 b")
# 修改变量 a 和 b 的值
a = 5;
b = 20;
if ( a <= b ):
print ("5 - a 小于等于 b")
else:
print ("5 - a 大于 b")
if ( b >= a ):
print ("6 - b 大于等于 a")
else:
print ("6 - b 小于 a")
运行结果:
3.2.3 Python赋值运算符
以下假设变量a为10,变量b为20:
例子:
a = 21
b = 10
c = 0
c = a + b
print ("1 - c 的值为:", c)
c += a
print ("2 - c 的值为:", c)
c *= a
print ("3 - c 的值为:", c)
c /= a
print ("4 - c 的值为:", c)
c = 2
c %= a
print ("5 - c 的值为:", c)
c **= a
print ("6 - c 的值为:", c)
c //= a
print ("7 - c 的值为:", c)
运行结果:
3.2.4 Python逻辑运算符
Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:
例子:
a = 10
b = 20
if ( a and b ):
print ("1 - 变量 a 和 b 都为 true")
else:
print ("1 - 变量 a 和 b 有一个不为 true")
if ( a or b ):
print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print ("2 - 变量 a 和 b 都不为 true")
# 修改变量 a 的值
a = 0
if ( a and b ):
print ("3 - 变量 a 和 b 都为 true")
else:
print ("3 - 变量 a 和 b 有一个不为 true")
if ( a or b ):
print ("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print ("4 - 变量 a 和 b 都不为 true")
if not( a and b ):
print ("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")
else:
print ("5 - 变量 a 和 b 都为 true")
运行结果:
3.2.5 Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
例子:
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d #( 30 * 15 ) / 5
print ("(a + b) * c / d 运算结果为:", e)
e = ((a + b) * c) / d # (30 * 15 ) / 5
print ("((a + b) * c) / d 运算结果为:", e)
e = (a + b) * (c / d); # (30) * (15/5)
print ("(a + b) * (c / d) 运算结果为:", e)
e = a + (b * c) / d; # 20 + (150/5)
print ("a + (b * c) / d 运算结果为:", e)
运行结果:
1.3 条件控制语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
3.3.1 if 语句
Python中if语句的一般形式如下所示:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句
如果 "condition_1" 为False,将判断 "condition_2"
如果"condition_2" 为 True 将执行 "statement_block_2" 块语句
如果 "condition_2" 为False,将执行"statement_block_3"块语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。
例子一:
var1 = 100
if var1:
print ("1 - if 表达式条件为 true")
print (var1)
var2 = 0
if var2:
print ("2 - if 表达式条件为 true")
print (var2)
print ("Good bye!")
运行结果:
从结果可以看到由于变量 var2 为 0,所以对应的 if 内的语句没有执行。
例子二:
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age < 0:
print("你是在逗我吧!")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
elif age > 2:
human = 22 + (age -2)*5
print("对应人类年龄: ", human)
### 退出提示
input("点击 enter 键退出")
运行结果:
例子三
例子需求:
输入一个测验成绩评定A-F
A:90-100
B:80-89
C:70-79
D:60-69
F:<60
程序实现:
score = int(input('请输入你的分数:'))
if 90 < score <= 100:
print('A')
elif score > 80:
print('B')
elif score > 70:
print('C')
elif score > 60:
print('D')
else:
print('F')
3.3.2 if中常用的操作运算符
以下为if中常用的操作运算符:
例子:== 操作符
print(5 == 6)
# 使用变量
x = 5
y = 8
print(x == y)
运行结果:
例子二:数字的比较运算
# 数字猜谜游戏
number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
guess = int(input("请输入你猜的数字:"))
if guess == number:
print("恭喜,你猜对了!")
elif guess < number:
print("猜的数字小了...")
elif guess > number:
print("猜的数字大了...")
运行结果:
3.3.3 if嵌套
在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中。
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
例子:求3个数的最大数
x=int(input("请输入第一个数:"))
y=int(input("请输入第二个数:"))
z=int(input("请输入第三个数:"))
if x>y:
if x>z:
print('x是最大值:%d'%x)
else:
print('z是最大值:%d'%z)
elif x>z:
if x>y:
print('x是最大值:%d'%x)
else:
print('y是最大值:%d'%y)
else:
if y>z:
print('y是最大值:%d'%y)
else:
print('z是最大值:%d'%z)
运行结果:
1.4 循环语句
Python中的循环语句有 for 和 while。
Python循环语句的控制结构图如下所示:
3.4.1 while 循环
while 判断条件:
语句
例子一:输出1-10之间所有的偶数
num=10
count=0
while num>0 :
if num%2==0 :
print(num)
count +=1
num -=1
print("有",count,"个偶数!")
运行结果:
例子二:九九乘法表
a=1
while a<10 :
b=1
while b<=a :
print(str(b)+"x"+str(a)+"="+str(a*b),end="\t")
b +=1
print()
a +=1
运行结果:
3.4.2 无限循环
有时需要程序一直在跑,就需要构造一个无限循环
例子:
var = 1
while var == 1 : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
运行结果:
你可以使用 CTRL+C 来退出当前的无限循环。
无限循环在服务器上客户端的实时请求非常有用。
3.4.3 while 循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块:
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
运行结果:
3.4.4 for语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的一般格式如下:
for <variable> in <sequence>:
<statements>
else:
<statements>
例子一:一个登录程序
_user="xiao"
_password="abc123"
username=input("Username:")
password=input("Password:")
if username ==_user and password ==_password:
print("welcone %s login..."%_user)
else:
print("用户名错误或者密码错误")
运行结果:
3.4.5 range()函数
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:
例子一:遍历数字序列
for i in range(5):
print(i)
例子二:使用range指定区间的值
for i in range(5,9) :
print(i)
例子三:结合range()和len()函数以遍历一个序列的索引
a = ['Python', 'c++', 'selenium3', 'appium', 'php']
for i in range(len(a)):
print(i, a[i])
3.4.6 break语句
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
例子:
for letter in 'Runoob': # 第一个实例
if letter == 'b':
break
print ('当前字母为 :', letter)
var = 10 # 第二个实例
while var > 0:
print ('当期变量值为 :', var)
var = var -1
if var == 5:
break
print ("Good bye!")
运行结果:
3.4.7 continue语句
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
例子:
for letter in 'Runoob': # 第一个实例
if letter == 'o': # 字母为 o 时跳过输出
continue
print ('当前字母 :', letter)
var = 10 # 第二个实例
while var > 0:
var = var -1
if var == 5: # 变量为 5 时跳过输出
continue
print ('当前变量值 :', var)
print ("Good bye!")
运行结果:
3.4.8 pass 语句
pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
例子:
while True:
pass
3.4.9 标志位
user="xiao"
password="abc123"
passed_authentication = False # 假,不成立 flag=标志位
for i in range(1,5):
username=input("Username:")
password=input("Password:")
if username ==user and password ==password :
print("welcone %s login..."%user)
passed_authentication = True
break
else:
print("用户名错误或者密码错误")
if not passed_authentication :
print("输错超过次数")
运行结果:
3.4.10 while嵌套
While循环也是可以多重嵌套的。
例子:使用#号输出一个长方形,用户指定宽和高,如果长为3个#,高为4个#,则输出一个横着3个#,高有4个#的长方形。
程序实现:
a=0
while a<=3:
b=0
while b<=2:
print("#",end="")
b+=1
a+=1
print()
运行结果: