一、嵌套循环
前边学过的循环是这样的:
multiplier = 5
for i in range(1,11):
print i, "*", multiplier, "=" ,i * multiplier
什么是嵌套循环呢?简单地说就是一个循环出现在另一个循环中。对于外循环的每次迭代,内循环都要完成它的所有迭代。利用嵌套便可以一次打印3个乘法表:
for multiplier in range(5,8):
for i in range(1,11):
print i, "*", multiplier, "=" ,i * multiplier
print
像这种嵌套结构,一定要非常注意缩进问题
二、可变循环
循环次数由用户决定,或者有程序的另一部决定,我们首先需要定义一个变量:
numStars = int(raw_input("How many stars do you want?"))
for i in range(numStars) :
print '* ',
这里想要所有的 “ * ” 在同一行,在print后边加逗号 “ , ” 即可。
三、可变嵌套循环
现在我们来尝试一下可变嵌套循环。其实也是嵌套循环,不过其中一个或多个循环在range( )函数中使用了变量。
numLines = int(raw_input("How many lines of stars do you want?"))
numStars = int(raw_input("How mang stars per line?"))
for i in range(numLines):
for j in range(numStars):
print '* ',
print
第一个print使所有的星号打印在同一行上;第二个print开始新的一行星号。
再试试双重嵌套结构:
numBlocks = int(raw_input("How mang blocks do you want?"))
numLines = int(raw_input("How many lines of stars do you want?"))
numStars = int(raw_input("How mang stars per line?"))
for k in range(numBlocks):
for i in range(numLines):
for j in range(numStars):
print '* ',
print
print
前两个print用法与上相同,第三个print在每个循环之间加一行空格。
四、更多可变嵌套循环
numBlocks = int(raw_input("How many blocks do you want?"))
for block in range(numBlocks):
for line in range(block * 2):
for star in range((block+line)*3):
print '*',
print
print
这样上例可能会更清楚一些了:
numBlocks = int(raw_input("How many blocks do you want?"))
for block in range(numBlocks):
print "block=",block
for line in range(block * 2):
for star in range((block+line)*3):
print "*",
print "line=",line ,"star=",star
print
由于所有的range( )函数都直接使用变量,即range(x)。故所有的计数都是从0开始。这个需要习惯,以后经常会用到的是从0开始而不是1。
五、小练习——秒表
import time
start = int(raw_input("What time do you want?",))
for i in range(start,0,-1):
print i
time.sleep(1)
print "Game Over!"