python3 基础三
一.if语句
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
1.每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块
2.使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块
3.在Python中没有switch – case语句
4.条件:(1)检查是否相等: ==;(2)检查是否不相等:!=;(3)比较数字:==,<=,>=;(4)布尔表达式: True ; False
(5)检查多个条件 : 1.条件一and条件二(同时满足);2.条件一or条件二(至少一个满足)
(6)检查特定值是否包含在列表中:1.特定值 in 列表 ;2.特定值 not in 列表
5.三元运算
1 #比较两数,输出最大的值
2 a=int(input('数字A:'))
3 b=int(input('数字b:'))
4 c=a if a>b else b
5 print(c)
6 ------------------------------
7 数字A:14
8 数字b:41
9 41
1 #比较三数,输出最大的值
2 a=int(input('数字A:'))
3 b=int(input('数字b:'))
4 c=int(input('数字c:'))
5 d=(a if a>b else b) if(a if a>b else b) else c
6 print(d)
7 ----------------------------------------------------
8 数字A:124
9 数字b:121
10 数字c:21
11 124
二.while循环
while 判断条件:
语句
1.注意冒号和缩进
2.Python中没有do..while循环
3.可以通过设置条件表达式永远不为 false 来实现无限循环,可以使用 CTRL+C 来退出当前的无限循环
4.使用标志
1 #定义一个变量作为标志,用于判断整个程序是否属于活动状态
2 active=True
3 while active:
4 message=input()
5 if message == 'quit':
6 active=False
7 else:
8 print(message)
9 ---------------------------------------------------
10 d
11 d
12 33
13 33
14 quit
三.else语句
1.如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句
2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
3.if语句中当不满足当前条件时,从而执行下一条else语句
四.for语句
for <variable> in <sequence>:
< statements>
else:
<statements>
1.for循环可以遍历任何序列的项目,如一个列表或者一个字符串
五.break和continue语句及循环中的else子句
1.break 语句可以跳出 for 和 while 的循环体
2.从 for 或 while 循环中终止,任何对应的循环 else 块将不执行
3.continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环
4.循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行
六.pass语句
1.pass是空语句,是为了保持程序结构的完整性
2.pass 不做任何事情,一般用做占位语句
七.输入输出语句
1.2.x中print (空格)"变量名";3.7中print("变量名")
2.print()输出函数
1 #print(self, *args, sep=' ', end='\n', file=None)
2 # • *args:表示任何多个无名参数,它是一个tuple;
3 # • sep:指定输出的多个参数之间的间隔符,默认是一个空格;
4 # • end:指定最后一个参数输出之后输出的字符,默认是换行符。
5 print(2,3,4,5)
6 print(2,3,4,5,sep='+',end='\r\n')
7 ----------------------------------------------------------------------
8 2 3 4 5
9 2+3+4+5
3.将输出的值转成字符串: repr() 或 str()
(1).str(): 函数返回一个用户易读的表达形式
(2).repr(): 产生一个解释器易读的表达形式
1 s="hello,world"
2 print(str(s))
3 print(repr(s))
4 a='hello world\n'
5 print(a)
6 print(repr(a)) # repr() 函数可以转义字符串中的特殊字符
7 print(str(a))
8 print(repr((s,a,('glle','runs'))))#repr(一个参数),参数可以是 Python 的任何对象
9 -----------------------------------------------------------------------------------------
10 hello,world
11 'hello,world'
12 hello world
13
14 'hello world\n'
15 hello world
16
17 ('hello,world', 'hello world\n', ('glle', 'runs'))
4.使用 str.format() 函数来格式化输出值,使输出的形式更加多样
1 # print('{}{}'.format('',''))括号及其里面的字符(称作格式化字段)将会被format()中的参数替换
2 # 在括号中的数字用于指向传入对象在 format() 中的位置
3 print('{0} 和 {1}'.format('Google', 'Runoob'))
4 print('{1} 和 {0}'.format('Google', 'Runoob'))
5
6
7 # 如果在 format() 中使用了关键字参数, 那么它们的值会指向使用该名字的参数
8 print('{name}名字: {old}'.format(name='小明', old='18'))
9
10
11 # 位置及关键字参数可以任意的结合
12 print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob', other='Taobao'))
13
14
15 # '!a' (使用 ascii()),
16 # '!s' (使用 str())
17 # '!r' (使用 repr())
18 # 可以用于在格式化某个值之前对其进行转化
19 import math
20 print('常量 PI 的值近似为: {}。'.format(math.pi))
21 print('常量 PI 的值近似为: {!a}。'.format(math.pi))
22
23 # 可选项 ':' 和格式标识符可以跟着字段名。在 ':' 后传入一个整数, 可以保证该域至少有这么多的宽度
24 print('常量 PI 的值近似为 {0:.3f}。'.format(math.pi))#float保留3位小数
25 print('{0:10}---{1:10d}'.format('ta',4))#至少有10的宽度
26
27 # 如果你有一个很长的格式化字符串, 而你不想将它们分开, 那么在格式化时通过变量名而非位置会是很好的事情。
28 # 最简单的就是传入一个字典, 然后使用方括号 '[]' 来访问键值
29 table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
30 print('Runoob: {0[Runoob]}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))
31 print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))
32 #也可以通过在 table 变量前使用 '**' 来实现相同的功能
33 ---------------------------------------------------------------------------------------
34 Google 和 Runoob
35 Runoob 和 Google
36 小明名字: 18
37 站点列表 Google, Runoob, 和 Taobao。
38 常量 PI 的值近似为: 3.141592653589793。
39 常量 PI 的值近似为: 3.141592653589793。
40 常量 PI 的值近似为 3.142。
41 ta --- 4
42 Runoob: 2; Google: 1; Taobao: 3
43 Runoob: 2; Google: 1; Taobao: 3
1 print('{2:10s}{0:10d}{1:10f}'.format(33,11,'22'))
2 print('{2:^10s}{0:<10d}{1:>10f}'.format(33,11,'22'))
3 #域宽为10 s,d,f表示字符串,整型,浮点型
4 #<,>,^分别左对齐,右对齐,居中
5 -------------------------------------------------------------------------
6 22 33 11.000000
7 22 33 11.000000
5.% 操作符也可以实现字符串格式化
6.input()函数读取键盘输入
Python2中raw_input将用户输入的内容当做字符串,传递给接受的变量,input会将用户输入的内容当做‘代码’进行处理,input=raw_input+eval
python3中只有input相当于python2中的raw_input,可以用eval函数实现python2中的input功能
input()函数让程序暂停工作,等待用户输入一些文本,用户按回车键后程序继续运行。我们可以将文本赋值存储在一个变量中,
1 #input(*args, **kwargs)
2 #kwargs:表示关键字参数,它是一个dict
3 # input() 置函数从标准输入读入一行文本,默认的标准输入是键盘
4 #input 可以接收一个Python表达式作为输入,并将运算结果返回
5 #使用input时,python将用户输入解读为字符串,可用int()来获取数值输入
6 print(input('name:'))
7 a=input("old:")
8 print(a)
9 print(type(a))
10 b=int(a)
11 print(b)
12 print(type(b))
13 ----------------------------------------------------------------------
14 name:alex
15 alex
16 old:16
17 16
18 <class 'str'>
19 16
20 <class 'int'>
*input和split读取多个输入
1 n1,n2=input('shuru1: ').split('#')#输入两个字符串,以#表示分隔
2 n3,n4,n5=input('shuru2:').split()##输入三个字符串,默认以空格表示分隔
3 s1=int(n1)+int(n2)
4 print(s1)
5 s2=int(n1)+int(n3)-int(n5)+int(n4)
6 print(s2)
7 --------------------------------------------------------
8 shuru1: 12#655
9 shuru2:231 33 23
10 667
11 253
八.迭代器iterator
1.迭代是指重复反馈过程的活动,目的是为了接近并达到所需的目标或结果。每一次的过程的重复被称为一次迭代,所得到的结果会被用来作为下一次迭代的初始值。
2.迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器也是可迭代对象,也可作用于for in
3.迭代器是一个可以记住遍历的位置的对象。
4.迭代器只能往后,不能往前;迭代器一般不能多次迭代;取完之后再取元素会报错
5.迭代器适合用于遍历一些巨大或无限的集合,仅仅在迭代到某个元素时才处理该元素
6.迭代器有两个基本的方法:iter()(把可迭代对象转换成迭代器进行使用) 和 next()(遍历)。
1 list=[1,2,34,3,4,'32','als']
2 it=iter(list) # 创建迭代器对象,字符串,列表或元组对象都可用于创建迭代器
3 print(next(it)) # 输出迭代器的下一个元素
4 print(next(it)) # 输出迭代器的下一个元素,
5 # 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
6 # 迭代器中访问完一个少一个,迭代器没有len
7 for x in it: #迭代器对象可以使用常规for语句进行遍历
8 print(x) #迭代器只能往前不会后退
9 --------------------------------------------------------------
10 1
11 2
12 34
13 3
14 4
15 32
16 als
九.生成器generator
1.在 Python 中,使用了 yield 的函数被称为生成器(generator)函数,这个函数的执行结果就是生成器
2.跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个特殊的迭代器。
3.在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
1 def test():
2 print('xxx')
3 yield 1
4 print('a')
5 yield 2
6 print('b')
7 yield 3
8 print('c')
9 yield 7
10 print('d')
11
12 g=test()
13 print(g)#<generator object test at 0x02DEE900>
14
15 print(next(g))#xxx 1
16 print(next(g))#a 2
17 ----------------------------------------------------------------
18 <generator object test at 0x0568E900>
19 xxx
20 1
21 a
22 2
4.调用一个生成器函数,返回的是一个迭代器对象。
1 #如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
2 import sys
3 def fibonacci(n): # 生成器函数 - 斐波那契
4 a, b, counter = 0, 1, 0
5 while True:
6 if (counter > n):
7 return
8 yield a
9 a, b = b, a + b
10 counter += 1
11 f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
12 while True:
13 try:
14 print (next(f), end=" ")
15 except StopIteration:
16 sys.exit()
17 -------------------------------------------------------------------
18 0 1 1 2 3 5 8 13 21 34 55
5.生成器表达式创建方式:把列表推导式的[]修改为()
1 l=(i for i in range(1,10)if i%2==0)
2 l2=[i for i in range(1,10)if i%2==0]
3
4 print(l)
5 print(l2)
6 ----------------------------------------
7 <generator object <genexpr> at 0x0573E900>
8 [2, 4, 6, 8]
6.生成器的send()方法
1 #send方法有一个参数,指定的是上一次被挂起的yeild语句的返回值
2 #相比于.__next__(),可以额外的给yield语句传值
3 #注意第一次调用 t.send(None)
4
5 def test():
6 print('xx')
7 res1=yield 1#'ooo'
8 print(res1)
9
10 res2=yield 2
11 print(res2)
12
13 g=test()
14
15 print(g.__next__())#调用.__next__()方法时,执行函数xx 1
16 # print(g.__next__())#调用.__next__()方法时,执行函数None 2
17 print(g.send('ooo'))#调用send方法,给上次的yeild指定返回值ooo 2
18 -------------------------------------------------------------
19 xx
20 1
21 ooo
22 2
7.关闭生成器.close()方法
1 def test():
2 print('xxx')
3 yield 1
4 print('a')
5 yield 2
6 print('b')
7 yield 3
8 print('c')
9 g=test()
10 print(g.__next__())
11 g.close()#关闭生成器,无法再访问
12 # print(g.__next__())异常StopIteration
13 ----------------------------------------------------
14 xxx
15 1
8.如果碰到return,会直接终止,抛出StopIteration异常提示,生成器只会遍历一次
十.补充
1.assert关键字
1 #assert断言
2 #当关键字后面的条件为假时,程序自动崩溃并抛出AssertionError的异常
3 #关键字后面的条件为真时,自动忽略
4 assert 3>4
5 #一般来说,我们可以用它在程序中置入检查点
6 #当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就很有用
7 ---------------------------------------------------------------------------------------
8 Traceback (most recent call last):
9 File "E:/python_work/example/2018.4.2.py", line 21, in <module>
10 assert 3>4
11 AssertionError
2.可迭代对象iterable:list,dict,set,str,generator(生成器),iterator(迭代器)
3.可迭代对象都可用for来遍历