Python学习笔记(7)——条件判断与循环

编程语言没有条件判断可不行,让我们来看看Python是怎么做的。

本文仅供个人记录和复习,不用于其他用途

条件判断

Python也不例外,if之类的判断语句也是有的:

1
2
3
4
num = 1
if num >= 1:
print 'num =', num
print 'end'

得到的输出如下:

num = 1
end

注意,if后面有一个冒号:,一定要记得打上,不然就会报错。

当然,加上else也是可以的:

1
2
3
4
5
6
num = 0
if num >= 1:
print 'num =', num
print 'end'
else:
print 'error'

结果输出如下:

error

else后面也有冒号,也要记得打上。其实呢,Python不像其他高级编程语言,是不需要用大括号{把代码块包起来。对于if来说,只需要if下面的代码存在缩进,那么就视作一个代码块。比如下面的这种就是错的:

1
2
3
4
5
6
num = 1
if num >= 1:
print 'num =', num
print 'end'
else:
print 'error'

Python会提示你else存在错误,因为第二个print没有缩进,那么if执行完第一条语句后就结束了,else没有办法和if对应起来。换成C语言代码可能好理解一点:

1
2
3
4
5
6
int num = 1;
if (num >= 1)
printf("num = %d\n", num);
printf("end");
else
printf("error");

这样一来逻辑就很清楚了吧?让我们接着了往下看:

1
2
3
4
5
6
7
8
9
num = 3
if num >= 10:
print 'num =', num
print 'end'
elif num >= 3:
print 'num =', num
print 'beg'
else
print 'error'

elif就相当于else if,只不过Python中是这么写而已。

其他的地方和C语言是类似的,比如:

1
2
if x:
print 'True'

如果x是非零数值、非空字符串、非空list等,就判断为True,否则为False

循环

Python有两种循环,第一种是for in的结构,用于遍历list和tuple:

1
2
3
names = ['hyx', 'miao']
for name in names:
print name

打印出来就是这样:

hyx
miao

如果把它转换成C++,那么就是这样:

1
2
3
4
for(auto &name : names)
{
std::cout << name << std::endl;
}

注意,for in也只执行后面的缩进块,所以编写Python时一定要注意缩进。可能有人还是不太懂,那么看看下面:

1
2
3
4
names = ['hyx', 'miao']
for name in names:
print name
print 'yes'

这个我们之前已经讲过了,print ‘yes’只会执行一次。那么再看看这个:

1
2
3
4
names = ['hyx', 'miao']
for name in names:
print name
print 'yes'

这个会直接报错。所以,Python中的缩进是非常重要的。由于没有使用大括号来表示代码块,那么缩进就成为了识别代码块的重要标志。可能其他的编程语言中缩进只是为了美观,那么在Python中就有着一定的实际意义。

再比如我们想计算1-10的整数之和,可以用一个sum变量做累加:

1
2
3
4
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print sum

如果要生成1-100的整数和,那么不太可能一个个打上去,我们可以使用range()函数,比如range(5)代表从0到小于5的整数列:

>>> range(5)
[0, 1, 2, 3, 4]

所以上面的问题可以这么解决:

1
2
3
4
sum = 0
for x in range(101):
sum = sum + x
print sum

第二种循环就是我们熟悉的while循环,只要满足条件,那么就执行代码块,否则就退出:

1
2
3
4
5
6
sum = 0
n = 99
while n > 0:
sum += n
n -= 2
print sum

上面的代码计算了100以内的奇数和,结果是2500

再谈raw_input()

一般来说,我们会用raw_input接收用户输入,然后做一些判断:

1
2
3
4
5
birth = raw_input('birth: ')
if birth < 2000:
print '90'
else:
print '00'

然而如果你运行上面这串代码,结果会是‘00’。这个是因为raw_input返回的是字符串,那么判断结果显然是False。所以为了得到整数,我们应该使用int()进行转换:

1
birth = int(raw_input('birth: '))

这样一来,如果用户输入的不是数字,Python会自动报错并退出。如果是数字,那么就会被转为整数,从而得到我们想要的结果。