Python中的嵌套与可变循环

一、嵌套循环

前边学过的循环是这样的:

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!"

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37369201/article/details/83009858
今日推荐