四 Python基础之条件语句和循环

if条件语句

Python中,最常用的判断自然就是if语句,可以使用if ... elif ... else来对条件进行判断,和其他一些语言不同的是,这里的elifelse if的缩写,但是这意味着在Python中,我们可以使用else if来代替elif呢?千万要注意,是不允许的!!必须使用elif的形式。

创建一个demo.py文件,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
age = 19
if age:
print('age exists')

weight = 119
if weight > 150:
print('you are obese!')
elif weight > 100:
print('Great, you are handsome!')
else:
print('Um...you are too thin!')

可以尝试执行一下,输出结果:

1
2
3
➜  Desktop python3 demo.py
age exists
Great, you are handsome!

基本逻辑和其他语言几乎没什么不同,主要注意关键字和基本格式比如缩进、冒号就行了。

循环

for ... in ...循环

使用for ... in ...循环,我们可以遍历出listtuple的元素,例如

1
2
3
4
5
6
7
names = ['Jhone', 'Alice', 'Joe']
for name in names:
print('name is %s' % name)

ages = (1, 2, 3, 4, 5)
for age in ages:
print('age is {0}'.format(age))

执行结果:

1
2
3
4
5
6
7
8
name is Jhone
name is Alice
name is Joe
age is 1
age is 2
age is 3
age is 4
age is 5
range()函数

Python内置了一个函数叫做range(),可以生成一个有序的整数序列

1
2
3
4
5
6
7
values = range(5)
for value in values:
print('value is %d' % value)

ages = range(2, 6)
for age in ages:
print('age is {0}'.format(age))

执行结果:

1
2
3
4
5
6
7
8
9
value is 0
value is 1
value is 2
value is 3
value is 4
age is 2
age is 3
age is 4
age is 5

从以上结果可以看出,当只有1个参数的时候,也就是range(x)的时候,表示生成从0不大于x的整数序列。

若有2个参数的时候,也就是类似range(x, y)的时候,表示生成从x开始到不大于y的整数序列。

那么问题来了,以上生成的都是从x开始并且不大于y的后面的元素都比前面的元素+1的序列,那如果我想要每次都+2而不是+1呢?其实,range()函数还有3个参数的表示,类似range(x, y, z),后面的z代表的就是步长,例如:

1
2
3
values = range(1, 5, 2) # 生成从1开始,元素每次递增为2并且不大于5的整数序列
for value in values:
print('value is %d' % (value))

执行结果:

1
2
3
➜  Desktop python3 demo.py
value is 1
value is 3

问题:求1到100的偶数之和?

1
2
3
4
5
values = range(0, 101, 2)
sum = 0
for value in values:
sum += value
print('sum is {0}'.format(sum))

执行结果:

1
sum is 2550

哇,感觉太方便了,有了range()函数,有时候真的是事半功倍呢。

while循环

这个没什么好说的,和其他语言几乎是一模一样,使用也非常简单。例如:

1
2
3
4
a = 5
while a > 0:
print('a is equal to %d' % a)
a-=2

执行结果:

1
2
3
4
➜  Desktop python3 demo.py
a is equal to 5
a is equal to 3
a is equal to 1
  • break

break的作用是结束本层循环

1
2
3
4
5
6
ret = 5
while ret:
ret -= 1
if ret == 2:
break
print(ret)

执行结果:

1
2
3
➜  Desktop python3 demo.py
4
3
  • continue

continue的作用是结束本次循环,请注意和break的区别。

1
2
3
4
5
6
ret = 5
while ret:
ret -= 1
if ret == 2:
continue
print(ret)
1
2
3
4
5
➜  Desktop python3 demo.py
4
3
1
0

小结

  • 条件语句用if...elif...else

  • range()函数用于生成整数序列,可根据步长调整生成整数序列的间隔

  • 循环有for...in...while,根据情景取舍

  • break退出本层循环,continue退出本次循环