python条件判断和循环

条件判断

if

条件判断使用if,语法格式

1
2
3
4
5
6
7
8
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>

其中elifelse均为可选。
下面以实例进行说明。

1
2
3
age = 20
if age >= 18:
print("你已经是成年人了。")

python中条件判断主要根据缩进和冒号进行判断,假如if中的条件为True,则执行if下一行缩进的print语句,否则什么也不做。
下面的语句则添加了else条件,当if条件为True时执行后面缩进的print语句,否则执行else后面缩进的语句。

1
2
3
4
5
age = 12
if age >= 18:
print("你已经是成年人了。")
else:
print("你还是个小孩子。")

下面的语句中添加了elifelse条件。
if条件为True时执行后面缩进的print语句,剩余的elifelse均不执行。
if条件为False时执行elif语句,当elif条件为True时,执行其后面缩进的print语句,剩下的else不执行。
ifelif条件均为False时,执行else后面缩进的print语句。

1
2
3
4
5
6
7
age = 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
7
number = 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
2
for item in sequence:
执行语句

for i in ..循环是将每个元素代入i中然后执行缩进的语句
计算1-10的和

1
2
3
4
sum = 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
7
>>> for i in range(1,5):
... print(i)
...
1
2
3
4

根据上面输出可以看到range()函数输出的序列包含左面数字,不包含右面数字。
根据for循环和range函数实现乘法口诀。
代码思路
根据乘法口诀的特点,a表示乘号前的数字,b表示乘号后的数字。
b总是和它所在的行数相等。
a是变化的,但变化范围总是从1至b

1
2
3
4
for 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()

输出结果
python-for-multi
为使输出美观,使用了print()中的end=""参数,默认情况下print()输出结束之后是换行符,可以自定义。
此处内层for循环的缩进语句中print()不换行;使用\t制表符进行对齐。
外层循环时换行(即乘法表每一行结束时换行)。

while

while循环语法格式

1
2
while 判断条件:
执行语句

while循环,只要条件满足就不断循环,直到条件不满足时才退出循环。
下面是1-100求和

1
2
3
4
5
6
sum = 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
19
while 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
5
for 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
5
for 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)

需要注意,breakcontinue语句不可滥用,通常都是配合if语句使用。
在大多数情况下可以通过逻辑判断等其它方式实现对应功能,而使用breakcontinue语句容易造成代码逻辑分叉多,容易出错。

Recommended Posts