条件判断
if
条件判断使用if
,语法格式1
2
3
4
5
6
7
8if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
其中elif
和else
均为可选。
下面以实例进行说明。1
2
3age = 20
if age >= 18:
print("你已经是成年人了。")
python中条件判断主要根据缩进和冒号进行判断,假如if中的条件为True,则执行if下一行缩进的print语句,否则什么也不做。
下面的语句则添加了else
条件,当if
条件为True时执行后面缩进的print语句,否则执行else
后面缩进的语句。1
2
3
4
5age = 12
if age >= 18:
print("你已经是成年人了。")
else:
print("你还是个小孩子。")
下面的语句中添加了elif
和else
条件。
当if
条件为True时执行后面缩进的print语句,剩余的elif
和else
均不执行。
当if
条件为False时执行elif
语句,当elif
条件为True时,执行其后面缩进的print语句,剩下的else
不执行。
当if
和elif
条件均为False时,执行else
后面缩进的print语句。1
2
3
4
5
6
7age = 4
if age >= 18:
print("你已经是成年人了。")
elif age > 6:
print("你已经是个少年了。")
else:
print("你还是个小孩子。")
由此可见if
条件判断是从上向下执行,当有条件成立时执行对应的缩进语句,剩余的条件将忽略。
判断字符串str
是否为空的条件if str.strip():
判断对象d1
是否为字典的条件if isinstance(d1,dict):
根据键盘输入判断数字是正数、负数还是零。1
2
3
4
5
6
7number = input("Please input a number:")
if int(number) > 0:
print("输入的{0}是正数".format(number))
elif int(number) == 0:
print("输入的{0}是零".format(number))
else:
print("输入的{0}是负数".format(number))
python中通过input接受的均为字符串,所以使用强制转换将类型转换为整型int(number)
。
循环
循环主要是解决重复性的问题,例如类似计算1到1000的和这类问题。
python中循环主要有for .. in ..
和while
循环。
for
for循环的语法格式1
2for item in sequence:
执行语句
for i in ..
循环是将每个元素代入i
中然后执行缩进的语句
计算1-10的和1
2
3
4sum = 0
for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum += i
print(sum)
当我们要计算1-100
甚至1-10000
的和时候难道要从1写道10000嘛?
使用range()
函数可以生成整数序列。1
2
3
4
5
6
7for i in range(1,5):
print(i)
...
1
2
3
4
根据上面输出可以看到range()
函数输出的序列包含左面数字,不包含右面数字。
根据for
循环和range
函数实现乘法口诀。
代码思路
根据乘法口诀的特点,a
表示乘号前的数字,b
表示乘号后的数字。b
总是和它所在的行数相等。a
是变化的,但变化范围总是从1至b
。1
2
3
4for b in range(1, 10):
for a in range(1, b+1):
print("{0} x {1} = {2}\t".format(a, b, a*b), end="")
print()
输出结果
为使输出美观,使用了print()
中的end=""
参数,默认情况下print()输出结束之后是换行符,可以自定义。
此处内层for循环的缩进语句中print()不换行;使用\t
制表符进行对齐。
外层循环时换行(即乘法表每一行结束时换行)。
while
while循环语法格式1
2while 判断条件:
执行语句
while循环,只要条件满足就不断循环,直到条件不满足时才退出循环。
下面是1-100求和1
2
3
4
5
6sum = 0
n = 100
while n > 0:
sum += n #等价于sum = sum + n
n -= 1 #等价于n = n -1
print(sum)
针对前面从键盘输入,再判断是正数、负数还是零的代码进行修改
增加判断键盘输入是否为数字,若不是数字则要求重新输入,直到输入数字,能够正确判断。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19while 1:
number = input("Please input a number:")
if number.strip():
if number.isdigit():
if int(number) > 0:
print("输入的{0}是正数。".format(number))
break
elif int(number) == 0:
print("输入的{0}是零。".format(number))
break
else:
print("输入的{0}是负数。".format(number))
break
else:
print("输入的不是数字,请重新输入。")
continue
else:
print("输入的是空格,请重新输入。")
continue
其中while 1
表示死循环,即除非主动跳出循环,否则将永远循环下去。
主动跳出循环使用break
实现。
当输入的不是数字或者是空格时要求继续输入,该功能实现则是使用continue
实现。
break
break语句可以在循环过程中直接跳出本层循环。1
2
3
4
5for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
i += 1
if i > 5: #在i大于5的时候执行break语句结束循环
break #执行break之后大于5的数字将全部无法输出
print(i)
continue
continue语句可以提前结束本轮循环,直接开始下一轮循环。1
2
3
4
5for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
i += 1
if i % 2 == 0: #如果i是偶数则执行continue
continue #执行continue则直接重新开始循环,不输出本次的i
print(i)
需要注意,break
和continue
语句不可滥用,通常都是配合if
语句使用。
在大多数情况下可以通过逻辑判断等其它方式实现对应功能,而使用break
或continue
语句容易造成代码逻辑分叉多,容易出错。