我刚刚开始学习Python并尝试编写一个简单的项目,但是由于某种原因,我无法使其正常工作。
我的代码在下面:
def bones_search(bone_guess, foot_bones = ["calcaneus", "talus", "cuboid", "navicular", "lateral cuneiform", "intermediate cuneiform", "medial cuneiform"]):
for bones in foot_bones:
if bones.lower() == bone_guess.lower():
foot_bones.remove(bone_guess.lower())
print("Correct!")
bone_guess = input("Guess 2 - Enter a foot bone: ")
for bone in foot_bones:
if bones.lower() == bone_guess.lower():
print("Correct!\nNumber of bone guess correct = 2")
else:
pass
return print("Incorrect!")
else:
pass
print("Incorrect!")
bone_guess = input("Guess 2 - Enter a foot bone: ")
for bone in foot_bones:
if bones.lower() == bone_guess.lower():
print("Correct!\nNumber of bone guess correct = 1")
else:
pass
print("Incorrect!\nNumber of bone guess correct = 0")
bones_search(input("Guess 1 - Enter a foot bone: "))
无论如何,只要我输入了正确的值之一(例如距骨),它仍然会显示“ Incorrect!”。
有人可以帮忙找出逻辑上的缺陷吗?
打印错误,因为您在第一个if-else块之后打印了“错误”。
您正在一个接一个地循环所有脚部骨骼。因此,如果您的输入不是跟骨,则如果] >>则不会输入第一个
if bones.lower() == bone_guess.lower():
没有其他内容,因此它自动移至打印incorrect
,第二个for循环开始工作。最终,您的代码可以正常工作,只是有一个逻辑错误。
Guess 1 - Enter a foot bone: talus Incorrect! Guess 2 - Enter a foot bone: talus Incorrect! Number of bone guess correct = 0 Correct! Guess 2 - Enter a foot bone:
也许不要再询问user_input(要求用户再次猜测),而是让第一个循环结束。
实际上,您需要递归地调用该函数。因为,骨骼名称太多,否则您将需要一遍又一遍地编写for循环,并且该程序的调试非常混乱!这是一个递归解决方案(假设玩家需要猜测所有骨骼):