Python 2.7 在while循环中赋值后仅打印两个变量
当我运行代码时,它要求用户输入3次,但当条件满足时,它仍然只打印其中的2次。为什么?我对Python还不熟悉,但我已经疯狂地四处寻找Google上的任何答案,但我仍然感到困惑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
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
),以便只计算有效的数据