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
中的这些变量没有变化,因此它们的值永远不会更改,循环也不会退出。
这应该有效:
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)