循环:
>>> for x in range(1,10):
print x
1
2
3
4
5
6
7
8
9
>>>
程序输出了数字1~9,而不是1~10。这里需要解释一下,因为range这个命令是排除结尾最后的一个数字的,所以,它在输出结果时不会包括范围内的最后一个数,但是它包含第一个数。
这次我们将代码改进一下,显示结果如下:
>>> list(range(1,10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
留意一下标点符号,代码中的圆括号中所包含的数字被称为参数。range命令内就含有两个参数,从1开始,到10结束,以逗号“,”隔开。
命令for in由两部分组成。在单词for之后必须跟一个变量名,而这个变量会在每次循环之后被赋予一个新值。所以,第一次的时候,它的值就是1,第二次的时候是2,以此类推。
而在单词in之后,Python会计算出一整套循环,并且列出来,这样就形成了最终显示的1~9列表。
生成随机数(模拟色子):
>>> import random
>>> random.randint(1,6)
2
你可以试着把第二行多输入几遍,这样就会发现,得到的结果并非都是一样的数字,而是1~6的随机数。
生成十个随机数:
>>> import random
>>> for x in range(1,11):
random_number=random.randint(1,6)
print(random_number)
4
1
3
2
4
5
3
1
6
4
>>>
if
本节将给这个“色子”程序加点“料”。比如两个色子一起丢,然后得到两个色子丢出次数的总和,将这个值输出。
>>> import random
>>> for x in range(1,11):
throw_1=random.randint(1,6)
throw_2=random.randint(1,6)
total=throw_1+throw_2
print(total)
if total==7:
print('Seven Thrown!')
if total==11:
print('Eleven Thrown!')
if throw_1==throw_2:
print('Double Thrown!')
2
Double Thrown!
5
7
Seven Thrown!
8
4
5
6
5
7
Seven Thrown!
8
>>>
逻辑计算:
>>> True+True
2
>>> True+False
1
>>>
else:
在之前的例子里,经常会看到在丢出色子后,可能显示的不止一条信息,只要if条件为真,都有可能输出一些额外的信息。有时,你或许想要有一些稍微不同的逻辑模式:如果if条件为真,你将这样,如果为假,你就那样。在Python里,需要用else来实现:
>>> a=7
>>> if a>7:
print('a is big')
else:
print('a is small')
a is small
>>>
在这个程序里,虽然有两种显示结果,但是在同一时间,只可能显示一条。
另一种变化是elif,就是else if的缩写。因此,可以把之前的例子扩展一下,让它变成3条逻辑线。
>>> a=7
>>> if a>7:
print('a is big')
else:
print('a is small')
a is small
>>> a=7
>>> if a>9:
print('a is very big')
elif a>7:
print('a is fairly big')
else:
print('a is small')
a is small
>>>
while:
本节将介绍while循环,它与之前的for循环稍稍有些不同。先说相同之处,这样有利于理解和掌握while循环。相同之处在于,后面都跟着一个条件,在这种情况下,之前所设立的条件一直在循环内。换句话说,只要执行条件为真,循环内的代码就会不断重复执行。这意味着需要考虑周全,并且确定什么时候条件才会不成立,否则,这个代码就成为了一个永无止境的程序,直到计算机死机。
修改前面的程序:
>>> import random
>>> throw_1=random.randint(1,6)
>>> throw_2=random.randint(1,6)
>>> while not(throw_1==6 and throw_2==6):
total=throw_1+throw_2
print(total)
throw_1=random.randint(1,6)
throw_2=random.randint(1,6)
print('Double Six thrown!')
虽然这段代码能够正常运行,但是看起来太“臃肿”。主要是因为写了两遍这段代码:
throw_1=random.randint(1,6)
throw_2=random.randint(1,6)
这里得告诉大家一条程序界内的“军规”——DRY(Don’t Repeat Yourself,拒绝重复)。当然,这句话肯定不是为这段代码而准备的,但是,作为一个合格的程序员,必须牢记这段话,因为以后将面对比这复杂百倍的程序。所以必须努力避免重复使用同一段代码。如果违反了这条规则,所写出的程序维护起来会相当痛苦。
你可以使用一个break来缩短代码,使之前的代码看起来“干练”一些。当Python遇到break时,变会跳出循环。
>>> import random
>>> while True:
throw_1=randon.randint(1,6)
throw_2=random.randint(1,6)
total=throw_1+throw_2
print(total)
if throw_1==6 and throw_2==6:
break
print('Double Six thrown!')