运行相同的循环两次,但得到不同的结果

时间:2016-09-12 00:18:53

标签: python

我无法解决这个问题,但我说我有一个名为“text”的深度为3的字符串数组。

在以下代码中如何:

UnsafeMutablePointer<CFTypeRef?>

我为每个循环获得不同的输出。

“第一”

print "FIRST"
for gate in text[1:]:
    print "GATE"
    for text in gate:
        print "TEXT"
        for entry in text:
            print "ENTRY"
            print what

print "SECOND"

for gate in text[1:]:
    print "GATE"
    for text in gate:
        print "TEXT"
        for entry in text:
            print "ENTRY"
            print what

“秒”

FIRST
GATE
TEXT
ENTRY
א

ENTRY
מחברת אל"ף

ENTRY
אחל לבאר לשון יהודית, להעמיד כל מלה כפי שאת, יש מלה רבת פנים ולא יתבונן המשכיל יסודותיה, כי אם במהות ענינה אשר סביבותיה למרבית פניה, כי המלה מושכת והולכת עד אשר מתחלקת ממראה אחד עד חמשה עשר פנים, על כן יש מלה אשר הענין ימשכנה ויורה עליה וילמד על גזרתה. ויש מלה אשר היא מושכת הענין ומבארת הפתרון ושכל סודו, וכה הוא פתרון הלשון ופשר המלים לפי מחלקותיהם ותוצאותיהם.

TEXT
ENTRY
אב.

每个循环编码完全相同,但我得到不同的输出。这怎么可能?

2 个答案:

答案 0 :(得分:7)

for循环&#34;泄漏&#34;变量。您可能希望将gatetextentry限定为各自的循环,但它们实际上是全局的。所以,在这个循环结束时

for text in gate:

text的值已被更改,这会影响下一个循环。

这是一个更小的例子:

x = 'abc'   

for x in x:
    print x,
# output: "a b c"

for x in x:
    print x,
# output: "c"

(如果能够运行相同的代码两次并得到相同的结果就是你觉得有价值的东西,Python可能不适合你的语言。有很多lovely种语言确实有这个属性。)

答案 1 :(得分:6)

text已被修改。在SECOND循环之前,text的值取自for text in gate: ...的最后一次迭代

您应该考虑将内部循环变量重命名为不同的东西。