Python 2.7 在while循环中赋值后仅打印两个变量

Python 2.7 在while循环中赋值后仅打印两个变量,python-2.7,Python 2.7,当我运行代码时,它要求用户输入3次,但当条件满足时,它仍然只打印其中的2次。为什么?我对Python还不熟悉,但我已经疯狂地四处寻找Google上的任何答案,但我仍然感到困惑 name = raw_input("Name your age: ") print ("3 choices.") key = raw_input("What will this world have?: ") def generator(): data = 1 choice1 = "" choice2

当我运行代码时,它要求用户输入3次,但当条件满足时,它仍然只打印其中的2次。为什么?我对Python还不熟悉,但我已经疯狂地四处寻找Google上的任何答案,但我仍然感到困惑

name = raw_input("Name your age: ")
print ("3 choices.")
key = raw_input("What will this world have?: ")

def generator():
   data = 1
   choice1 = ""
   choice2 = ""
   choice3 = ""   
   while(data != 3):
       key = raw_input("What will this world have?: ")  
       data += 1
       if (key == "grass"):
               choice1 = "The world is covered in green grass."
       elif (key == "water"):
               choice2 = "The world is covered in water."
       elif (key == "sky"):
               choice3 = "The sky is vast and beautiful."
       if (data >= 3):   
          print("Before you is " + name)
          print(choice1)
          print(choice2)
          print(choice3)  
          raw_input("Press Enter to continue...")
       else:
           print("Invalid Option")


generator()

出现问题的原因是您在
1
处启动
数据。
然后用户输入他们的第一个选择,然后您将
数据
增加到2。 然后用户输入第三个选项,您可以将
数据
增加到3

因为
data
现在是
3
,所以如果data>=3
语句,它将执行
,
并且只打印
choice1
choice2
,因为用户还没有给出第三个选择

如果设置:

data = 0
在开始时,而不是:

data = 1
然后用户必须输入他们的第三个选项,它将按照您的预期工作

更新 要停止它一直打印
无效选项
,您需要从此处移动您的else的位置:

如果(数据>=3):
打印(“在您之前”+姓名)
打印(选项1)
打印(选项2)
打印(选项3)
原始输入(“按回车键继续…”)
其他:
打印(“无效选项”)
到这里:

if(key==“grass”):
choice1=“世界被绿草覆盖。”
elif(键=“水”):
choice2=“世界被水覆盖。”
elif(键=“天空”):
choice3=“天空广阔而美丽。”
其他:
打印(“无效选项”)
否则,每次执行循环和
数据<3
时,它都会打印
无效选项

此外,如果您选择了无效选项,它将弄乱您的
数据
计数器。我建议移动增加
数据的行

while(数据!=3):
key=原始输入(“这个世界将有什么?:”)
如果(键==“草”):
choice1=“世界被绿草覆盖。”
elif(键=“水”):
choice2=“世界被水覆盖。”
elif(键=“天空”):
choice3=“天空广阔而美丽。”
其他:
打印(“无效选项”)
继续#如果该选项无效,将跳过循环的其余部分
数据+=1#仅当选项有效时才增加
如果(数据>=3):
打印(“在您之前”+姓名)
打印(选项1)
打印(选项2)
打印(选项3)
原始输入(“按回车键继续…”)

我在原始代码中尝试了这个方法,它会提示所有三个输入。当我尝试编辑时,当我输入第二个选项并仅打印choice2和choice3时,它仍然显示无效选项。还有其他想法吗?谢谢你的回复。当它显示
无效选项时,你在输入什么?您可能会对
key=raw\u输入感到困惑,这不在函数范围内,它不起任何作用,所以您应该删除它。哇,哈哈,好吧,我删除了它,并按建议设置了数据,现在它工作得很好!我觉得自己很傻哈哈谢谢!:)不用担心,请检查我的下一次编辑以修复您可能遇到的另一个错误。请考虑我的回答,如果它帮助了你。你在用户输入之后立即增加<代码>数据< /代码>计数,不管它是否是一个有效的选项。如果只增加
if
/
elif
块中的
数据(
数据+=1
),以便只计算有效的
数据