无法让FOR循环工作

时间:2017-02-08 00:04:47

标签: python loops

下面,我插入了一些明显错误的代码,除了最新的Python用户之外。

人们会非常友好地建议对代码进行一些新手改进吗?如逻辑变量名,添加注释等。

根据问题中的请求,我们也会感谢对代码中错误的更正。

  

我遇到了让下面的循环工作的问题。有没有人对错误有什么建议?目前我被问到这个问题,然后代码显示错误。

     

应该发生的是我被问到一个问题,然后有3次机会正确回答。

a = input("What is the opposite to night?")

for xx in range(0,3)
    if a == Night:
    print("That's right! Well done")
    else:
    print("Sorry, try again")

4 个答案:

答案 0 :(得分:4)

请参阅下面的更正:

a = input("What is the opposite to night?")

for x in range(0,3): # must have colons at the end of for statement
    if a.lower() == "night":   # we should accept all cases
      print("That's right! Well done") # indentation required in if statement
    else:
      print("Sorry, try again") # indentation required also 

答案 1 :(得分:4)

我认为问什么是正确的更有价值:

  • input(..)只被调用一次而不在循环中;
  • for循环结尾处有无冒号;
  • 您应使用字符串来比较答案,因此"Night";
  • 字符串实际应该"day" 进行比较,因为这是正确答案;
  • 答案更好地经过测试不区分大小写;
  • 不应该说"try again"如果是最后一次机会;
  • 它与“ 相对”(对@TemporalWolf赞不绝口);
  • 如果答案正确 break ;和
  • 缩进错误

所以修复就是:

for xx in range(0,3): # colon
    a = input("What is the opposite of night?") # input in the loop
    if a.lower() != "day": # comparing against "day" (string)
        if xx < 2: #only print try again if it is not the last chance
            print("Sorry, try again") #indentation
        else:
            print("Too bad, well goodbye.")
    else:
        print("That's right! Well done") # indentation
        break # break if correct

其他建议:您可以使用range(3)代替更短的range(0,3)

答案 2 :(得分:1)

Compare
  

并非所有答案都会有所帮助,即使它们产生了“正确”的答案

&安培;

  

如果您从StackOverflow“借用”代码,您可能会被发现。

答案 3 :(得分:-2)

for xx in range(0,3)

应该是

for x in range(0,3):

并且还可以通过

进行优化(尽管范围很小,范围很小)
for x in xrange(3)

最后,Night需要包含在引号中,所以:

if a == "Night"