python - 如果用户输入不在范围内,如何使用while循环?
问题描述
这是我遇到麻烦的家庭作业。这是问题所在:
实现一个函数 dartGame() 请求用户输入飞镖的 x 和 y 坐标(每个在 -10 和 10 之间)并计算飞镖是否击中了飞镖盘,一个圆心 (0,0) 和半径为 8 的圆。如果是这样,一个字符串'它在!:-)' 被打印出来,否则 'It is not in. :-(' 被打印出来。注意圆的等式是 x2 + y2 = r2;为了确保飞镖击中棋盘,公式是 x2 + y2 <= 82
>>> dartGame()
Enter x: 4
Enter y: 2.5
It is in! :-)
>>> dartGame()
Enter x: 9.9
Enter y: -9.9
It isn't in. :-(
>>>
这是我尝试过的代码。我想要做的是要求用户输入 x。如果x < -10 or x > 10
我希望函数继续要求输入,直到满足参数。一旦建立了 x 坐标,我想对 y 做完全相同的事情。我遇到一个问题,如果我猜出一个超出范围的数字,我的第一个 while 循环会无限重复。例如,如果我猜 -13 它会重复,但如果我猜 4.5 它仍然会重复。
def dartGame():
x = float(input("Enter x: ", ))
while x < -10 or x > 10:
float(input("Out of range. Please select a number between -10 and 10: ", ))
y = float(input("Enter y: ", ))
while y < -10 or y > 10:
float(input("Out of range. Please select a number between -10 and 10: ", ))
dartboard = x**2 + y**2
if dartboard <= 8**2:
print("It is in!")
else:
print("It isn't in. :-(")
解决方案
您应该在 while 循环内分配 x 和 y 的值
def dartGame():
x = float(input("Enter x: ", ))
while x < -10 or x > 10:
x = float(input("Out of range. Please select a number between -10 and 10: ", ))
y = float(input("Enter y: ", ))
while y < -10 or y > 10:
y = float(input("Out of range. Please select a number between -10 and 10: ", ))
dartboard = x**2 + y**2
if dartboard <= 8**2:
print("It is in!")
else:
print("It isn't in. :-(")