首页 > 解决方案 > 如果用户输入不在范围内,如何使用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. :-(")

标签: pythonfor-loop

解决方案


您应该在 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. :-(")

推荐阅读