if语句能够有条件地执行代码,如果条件为真,就执行后续代码块;如果条件为假,就不执行
money = 1000
s = int(input("请输入取款金额"))
if money >= s:
money -= s
print("余额为:",money)
请输入取款金额100
余额为:900
如果条件为假没有执行第一个代码块,将进入第二个代码块
num = int(input("请输入一个整数:"))
if num%2 == 0:
print(num,"是偶数")
else:
# else后面不接任何条件
print(num,"是奇数")
请输入一个整数:3
3 是奇数
要检查多个条件,可使用elif。elif是else if的缩写,由一个if子句和一个else子句组合而 成,也就是包含条件的else子句。
num = int(input("输入一个数字:"))
if num > 0:
print('是正数')
elif num < 0:
print('是负数')
else:
print('是0')
输入一个数字:-2
是负数
num = int(input("输入成绩:"))
if num > 70:
if 90<num<=100:
print("A")
elif 80<num<=90:
print("B")
else:
print("C")
else:
if num < 0:
print("输入错误!")
else:
print("D")
输入成绩:71
C
Python中还有一种特殊的条件判断,叫做条件表达式,也称三目运算符的 下面的表达式使用if和else确定其值:
a = 10
b = 11
c = a if a>b else b
print(c)
# 先执行中间的if,如果返回True,输出左边结果,False则输出右边结果。
11
Python的assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行;反之,Python 解释器会报 AssertionError 错误,经常用作程序初期测试和调试过程中的辅助工具。
num = 0
assert 0 < num < 100,"超出范围"
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-16-4f32cf376fde> in <module>()
1 num = 0
----> 2 assert 0 < num < 100,"超出范围"
AssertionError: 超出范围
a = 1
while a<10:
print(a,end=" ")
a += 1
1 2 3 4 5 6 7 8 9
# 使用while循环计算1到100之间的偶数和
sum = 0
a = 1
while a<101:
if a%2 == 0:
sum += a
a +=1
print(sum)
2550
基本上, 可迭代对象都是可使用for循环进行遍历的对象。
for i in "python":
print(i,end=" ")
p y t h o n
如果循环体中不需要使用到自定义变量,可将自定义变量写成"_"
for _ in range(5):
print("Python",end=",")
Python,Python,Python,Python,Python,
# 使用for循环计算1到100之间的偶数和
sum = 0
for i in range(1,101):
if i%2 == 0:
sum += i
print(sum)
2550
相比前面使用的while循环,这些代码要紧凑得多。只要能够使用for循环,就不要使用while循环。能用while循环的不一定都可以用for实现,for循环必须知道循环的次数,而while循环循环的次数可以是不确定的,循环次数不定的循环就只能用while循环实现。
要遍历字典的所有关键字,可像遍历序列那样使用普通的for语句
d = {'x': 1, 'y': 2, 'z': 3}
for i in d:
print(i, 'corresponds to', d[i])
x corresponds to 1
y corresponds to 2
z corresponds to 3
for i in d.values():
print(i,end = ',')
1,2,3,
for i in d.keys():
print(i,end = ',')
x,y,z,
for i,j in d.items():
print(i, 'corresponds to', j)
x corresponds to 1
y corresponds to 2
z corresponds to 3
Python提供了多个可帮助迭代序列(或其他可迭代对象)的函数
names = ['anne', 'beth', 'george', 'damon']
ages = [12, 45, 32, 102]
for i in range(len(names)):
print(names[i], 'is', ages[i], 'years old')
anne is 12 years old
beth is 45 years old
george is 32 years old
damon is 102 years old
一个很有用的并行迭代工具是内置函数zip,它将两个 序列“缝合”起来,并返回一个由元组组成的序列。返回值是一个适合迭代的对象,要查看其内 容,可使用list将其转换为列表。
list(zip(names, ages))
[('anne', 12), ('beth', 45), ('george', 32), ('damon', 102)]
# “缝合”后,可在循环中将元组解包。
for name, age in zip(names, ages):
print(name, 'is', age, 'years old')
anne is 12 years old
beth is 45 years old
george is 32 years old
damon is 102 years old
函数zip可用于“缝合”任意数量的序列。需要指出的是,当序列的长度不同时,函数zip将 在最短的序列用完后停止“缝合”。
list(zip(range(5), range(100000000)))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
使用enumerate获取序列迭代的索引和值
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
for i,j in enumerate(seasons):
print(i,j)
0 Spring
1 Summer
2 Fall
3 Winter
# enumerate()等价于
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
来看另外两个很有用的函数:reversed和sorted。它们类似于列表方法reverse和sort( sorted 接受的参数也与sort类似),但可用于任何序列或可迭代的对象,且不就地修改对象,而是返回 反转和排序后的版本。
sorted([4, 3, 6, 8, 3],key= )
[3, 3, 4, 6, 8]
sorted('Hello, world!')
[' ', '!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
list(reversed('Hello, world!'))
['!', 'd', 'l', 'r', 'o', 'w', ' ', ',', 'o', 'l', 'l', 'e', 'H']
','.join(reversed('Hello, world!'))
'!,d,l,r,o,w, ,,,o,l,l,e,H'
请注意, sorted返回一个列表,而reversed像zip那样返回一个可迭代对象。不能 对它执行索引或切片操作,也不能直接对它调用列表的方法。要执行这些操作,可先使用list对 返回的对象进行转换。
通常,循环会不断地执行代码块,直到条件为假或使用完序列中的所有元素。但在有些情况 下,可能想中断循环,开始新的代码块或直接结束循环。
用于结束循环结构,通常与if一起使用
for i in range(3):
pwd = input("输入密码:")
if pwd == "1234":
print("正确")
break
else:
print("错误")
输入密码:1234
正确
# while做个对比
a = 0
while a<3:
pwd = input("输入密码:")
if pwd == "1234":
print("正确")
break
else:
print("错误")
# 改变变量
a += 1
输入密码:1234
正确
用于结束当前循环,进入下一次循环,通常与if一起使用
# 打印100以内的偶数
for i in range(1,101):
if i%2 != 0:
continue
print(i,end = ",")
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,
语句什么都不做,只是一个占位符,用在语法上需要语法的地方,用在先搭建语法结构,还没想好代码怎么写的时候
num = int(input("请输入一个整数:"))
if num > 10:
pass
else:
print("比10小")
请输入一个整数:11