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
if...else...
 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
print()

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'))
str()和repr()

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.14159265358979339 常量 PI 的值近似为: 3.14159265358979340 常量 PI 的值近似为 3.14241 ta        ---         4
42 Runoob: 2; Google: 1; Taobao: 3
43 Runoob: 2; Google: 1; Taobao: 3
str.format()
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()

*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
split

 

八.迭代器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
iter()和next()

 

九.生成器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
yield

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
View Code

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
send()

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
.close

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
assert

2.可迭代对象iterable:list,dict,set,str,generator(生成器),iterator(迭代器)

3.可迭代对象都可用for来遍历

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2018-05-26 20:29  温润有方  阅读(789)  评论(0编辑  收藏  举报