第四章:条件循环语句等
1.print和import
print(1,2)
输出1 2不会输出元组
from somemodule import somefunction as a
导入某个包中的函数,并为这个函数起名(可以import*,或者多个函数).
2.序列解包
x,y,z=1,2,3
输出:x=1,y=2,z=3
对于元组:values=(1,2,3)也同样适用,另外等号左边的项的个数不足时会抛出异常,可以x,y*=values,这样y=(2,3)
3.链式赋值
x=y=z
4.增量赋值
x+=1(不能写成x=x+1)
乘法和除法于此类似
5.布尔变量
bool(‘’)
输出:False
bool(‘hl’)
输出:True
6.条件执行和if语句
num1=int(input('please input number'))
if num1==0:
print('you win!')
#pass
elif num1<0:
print('xiao le ')
#pass
elif num1>0:#可以将else if简写成 elif
print('da le ')
#pass
else:
print('please input zhengque de shuzi')
#pass
要注意缩进,并且判断数字的时候要转换成int类型.
x is y---->判断x,y是否为同一个对象(在内存中),==判断值是否相等.
in 成员资格运算,比较字符或者字符串是否在字符串中
字符串<字符串 返回True或者False 按照字母顺序比较
7.布尔运算符
and or not 等(具有短路逻辑);
8.断言
在错误出现的时候让程序崩溃
age=-1
assert 0<age<100,’年龄有误’
运行时程序会崩溃,并报错:‘年龄有误’
9.while循环:
while x<=10:
print(x)
x+=1
10.for循环:
words=[‘hello’,’zq’,’i’,’miss’,’you’]
for i in words:
print(i)
用for循环可以实现迭代,另一种实现迭代的是range()函数;
for i in range(1,100,2):
print(i)
range函数可以有三个参数,起始位置,结束位置和步长,xrang也与他类似,但是xrange每次创建一个数,有时会更加高效.
11.循环遍历字典元素
d={‘x’:1,’y’:2,’z’:3}
for i in d:
print(d[i])
12.迭代工具
并行迭代zip
names=[‘a’,’b’,’c’,’d’,’e’]
values=[‘1’,’2’,’3’,’4’,’5’]
for name,value in zip(names,values)
print(name,value)
特别地,如果names或者values长度不足,则会结束.
编号迭代enumerate
for index,string in enumerate(strings)
if’xx’ in string:
strings[index]=’[censored]’
这个函数可以在提供索引的地方迭代索引。
翻转和排序迭代reversed和sorted
作用于序列或者可迭代对象上,不是原地修改,而是返回新的版本。
13.跳出循环
break
continue
以上这些和C语言,java等类似就不一一赘述
14.列表式推到
[x*x for x in range(10)]
输出:[0-9的平方]
可以在其中添加for或者if等其他语句
15.三人行
pass:
程序什么事情都不做,这种情况必须用pass.因为空代码块是非法的.
f num1==0:
print('you win!')
pass
elif num1<0:
print('xiao le ')
del:
删除的时候只是删除名称,并不会将内存中的列表删除
x=[1,2,3]
y=x
del x
输出y:[1,2,3]
exec和eval:
exec是用来执行一个字符串的,eval是求一个字符串的值的
exec(‘print(‘hello’)’)
输出:hello
为了安全起见,要为exec定义一个作用域,让这个函数只在这个作用域有效,不会影响其他的代码:
scope={}
exec(‘print(‘hello’)’) in scope
输出:hello
#下面的代码可以正常执行
eval(‘1+2’)
输出:3
eval也有作用域,并且有两个,全局的作用域(必须是字典),局部的作用域(任何形式的映射)
>>> scope={}
>>> scope['x']=2
>>> scope['y']=3
>>> eval('x*y',scope)
6
同理的二者调用的作用域也能互相使用
<!--EndFragment-->