结合"for"和"while"的嵌套循环



My Python Script:

app = "google facebook yahoo"
prec = 0
test = 0
while test < 4 :
    print "The test is test%d" % (test)
while prec < 4 :
    prec = prec + 1
for i in app.split():
    print "The word is " + (i) + " precedence %d" % (prec)

现在的实际输出:

其印刷连续如下

The test is test0
The test is test0
The test is test0
The test is test0
The test is test0
The test is test0

预期输出:

The test1 is
The word is google precedence 1    
The word is facebook precedence 2
The word is yahoo precedence 3
The test2 is
The word is google precedence 1    
The word is facebook precedence 2
The word is yahoo precedence 3
The test3 is
The word is google precedence 1    
The word is facebook precedence 2
The word is yahoo precedence 3
The test4 is
The word is google precedence 1    
The word is facebook precedence 2
The word is yahoo precedence 3

请指导我如何实现此输出。提前谢谢。

一个问题是你的循环没有嵌套。接下来是你的第一个循环

while test < 4 :
    print "The test is test%d" % (test)

是一个无限循环,因为您的变量"test"设置为 0,并且在循环中永远不会改变。所以 test<4 总是正确的。

你可以做这样的事情。

apps = "google facebook yahoo"
for i in range (1,4):
    print 'test' + str(i) + 'is...'
    precedence = 1
    for app in apps.split():
        print "The word is " + app + " precedence " + str(precedence)
        precedence += 1 
while 循环

中的这些变量没有变化,因此它们的值永远不会更改,循环也不会退出。

这应该有效:

apps = ['google', 'facebook', 'yahoo']
for i in xrange(4):
    print 'test' + str(i) + 'is...'
    for app in apps:
        print "The word is " + app + " precedence %d" % i
好的,

我试图通过尽可能少地修改原始代码来修复它。

首先,任何时候你使用 while 循环时,你都需要确保它可以被打破。虽然循环基本上意味着"运行此任务,直到达到某个条件"。在您的情况下,您的 while 循环将运行,直到测试大于或等于 4。因此,为了中断,我在循环的开头添加了以下代码。

test += 1

+= 只是测试 = 测试 + 1 的简写

一旦测试达到 4,程序将退出 while 循环。

代码中不需要第二个 while 循环,因为您已经有一个迭代字符串的 for 循环。在这种情况下,只需删除第二个 while 并将 prec 计数器放在 for 循环内要简单得多。为了确保每个循环的计数器都重置,我将 prec = 0 移到了 while 循环内部,但在 for 循环之外。每次 for 循环运行 prec 从 0 开始,然后递增到 1,2,3 然后又回到 0 时,都是如此。

希望对您有所帮助!

#!/usr/bin/python
app = "google facebook yahoo"
test = 0
while test < 4 :
    test += 1
    print "The test is test%d" % (test)
    prec = 0
    for i in app.split():
        prec = prec + 1
        print "The word is " + (i) + " precedence %d" % (prec)

相关内容

  • 没有找到相关文章

最新更新