Python 简单的验证会导致无限的While循环
我目前正在为一个事件制作一个记分系统,但在使用while循环验证用户输入时遇到了问题。例如,我想强制用户输入他们的姓名,以便将其添加到我使用字典搜索的网球等运动的位置。每次我要求他们输入他们的用户输入时,while循环就一直在进行,导致了一个永无止境的while循环。这就是我所做的Python 简单的验证会导致无限的While循环,python,python-3.x,dictionary,while-loop,Python,Python 3.x,Dictionary,While Loop,我目前正在为一个事件制作一个记分系统,但在使用while循环验证用户输入时遇到了问题。例如,我想强制用户输入他们的姓名,以便将其添加到我使用字典搜索的网球等运动的位置。每次我要求他们输入他们的用户输入时,while循环就一直在进行,导致了一个永无止境的while循环。这就是我所做的 ```solo_player = { "Contestant 1":{"Player 1":[],"Score":[],"Event"
```solo_player = {
"Contestant 1":{"Player 1":[],"Score":[],"Event":[]},
"Contestant 2":{"Player 2 ":[],"Score":[],"Event":[]},
"Contestant 3":{"Player 3":[],"Score":[],"Event":[]},
"Contestant 4":{"Player 4":[],"Score":[],"Event":[]}}
def individual():
solo_name = False
while not solo_name:
solo_name = input("What is your name:")
print(""" \nIndividual Menu and Available Spots\n
1) Player 1
2) Player 2
3) Player 3
\n4) Go back to Main Menu\n""")
solo_menu = ["1","2","3","4"] #valid choices for this menu
solo_menu = False
while not solo_menu:
solo_menu = input("Please enter your choice here:")
if solo_menu == "1":
solo_player["Contestant 1"]["Player 1"].append(solo_name)
print(solo_player["Contestant 1"])
print("Thank you for taking the spot of Player 1")
solo_menu = True
elif solo_menu == "2":
solo_player["Contestant 2"]["Player 2"].append(solo_name)
print(solo_player["Contestant 2"])
print("Thank you for taking the spot of Player 2")
solo_menu = True
else:
print("Enter a value between 1-4)
solo_menu = False```
我的理想输出是,当我从可用点中选择一个点后,while循环将停止。很抱歉,if/else语句太长了,我对它很陌生,所以我不知道如何缩短它
编辑:我解决了这个问题。这是由于在我的菜单def之外调用单个func造成的。以下是我相信您想要的 有几个变化:
elif
过于繁琐。只需连接已验证的用户输入即可派生密钥
在您发布的代码中,缩进是完全错误的,因此我们无法真正说出循环和函数的确切含义。您能否尝试将代码包装在代码块中,通过三个勾号“I ll try and fixed”来修复它?请提供预期的(MRE)。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出来测试我们的建议。您发布的代码无法运行。它挂起等待输入——不要期望我们输入测试数据。相反,只需硬编码一个导致问题的测试用例;删除额外的案例,即初始化开销。您还必须测试程序的较小部分,以便我们集中精力解决一个问题。扫描您的代码至少会显示三个。很抱歉复制了整个代码,我会尽量缩短它。感谢这位男士solo_player=“”到底应该做什么?我对编程很陌生,所以IdkI在代码中看不到
solo\u player=”“
。我的坏意思是你给我的答案上的solo\u menu=“”
,我在尝试使用代码时似乎遇到了与以前相同的问题
solo_player = {
"Contestant 1":{"Player 1":[],"Score":[],"Event":[]},
"Contestant 2":{"Player 2":[],"Score":[],"Event":[]},
"Contestant 3":{"Player 3":[],"Score":[],"Event":[]},
"Contestant 4":{"Player 4":[],"Score":[],"Event":[]},
"Contestant 5":{"Player 5":[],"Score":[],"Event":[]},
"Contestant 6":{"Player 6":[],"Score":[],"Event":[]},
"Contestant 7":{"Player 7":[],"Score":[],"Event":[]}}
solo_name=""
while solo_name == "":
solo_name = input("What is your name:")
print(""" \nIndividual Menu and Available Spots\n
1) Player 1
2) Player 2
3) Player 3
4) Player 4
5) Player 5
6) Player 6
7) Player 7
\8) Go back to Main Menu\n""")
#prompt for player slot
solo_menu_options = ["1","2","3","4","5","6","7","8"] #valid choices for this menu
solo_menu=""
while solo_menu not in solo_menu_options:
solo_menu = input("Please enter your choice here:")
solo_player["Contestant "+solo_menu]["Player "+solo_menu].append(solo_name)
print(solo_player["Contestant "+solo_menu])
print("Thank you for taking the spot of Player "+solo_menu)