【问题标题】:How to validate a users input to Numbers only?如何仅验证用户对 Numbers 的输入?
【发布时间】:2020-10-13 08:06:43
【问题描述】:

我需要帮助验证我提出的(随机)问题的输入,以确保用户输入的只是一个数字,而不是字母或任何其他随机字符。此外,除了验证之外,还应该有一条错误消息通知用户他们做错了什么,并重复他们做问题的机会。

到目前为止,我需要验证的代码部分如下:

def quiz():
    x = random.randint(1, 10)
    y = random.randint(1, 10)

    ops = {'+': operator.add,'-': operator.sub,'*': operator.mul}

    keys = list(ops.keys())
    opt = random.choice(keys)
    operation = ops[opt]  

    answer = operation(x, y)

    print ("\nWhat is {} {} {}?".format(x, opt, y))
    userAnswer= int(input("\nYour answer: "))

    if userAnswer != answer: #validate users answer to correct answer
        print ("\nIncorrect. The right answer is",answer,"")
        print ("\n============= 8 =============")
        return False
    else:
        print("\nCorrect!")
        print ("\n============= 8 =============")
        return True

for i in range(questions): #ask 10 questions
    if quiz():
        score +=1

print("\n{}: You got {}/{} questions correct.".format(name, score, questions,))

提前致谢!

【问题讨论】:

标签: python


【解决方案1】:

使用try...except:

while True:
    userAnswer = input("\nYour answer: ")
    try:
       val = float(userAnswer)
       break
    except ValueError:
       print("That's not a number!")

如果您只需要整数,请使用int 而不是float

【讨论】:

  • 谢谢!我现在将尝试将其集成到我的代码中。
  • 用我的代码替换userAnswer= int(input("\nYour answer: "))这一行
  • 啊,你编辑了,谢谢,我在尝试将代码尽快用于我的代码时遇到了一些问题,我试试这个。是的,我将标记为已回答。再次感谢!
  • 谢谢,这行得通,它验证了输入,但是,在代码会说不管用户是否得到他们的答案之前,对或错,需要解决这个问题。在我得到它之前有什么建议吗? @bigOTHER
  • @MysticMods 不会在quiz() 中打印任何内容,通过调用它来获取她的值并在需要时打印它
【解决方案2】:

单行:

assert input('Enter Number: ').isdigit()

【讨论】:

    【解决方案3】:

    您可以使用函数验证整数输入:

    def int_validation(user_Input):
        try:
            val = int(user_Input)
        except ValueError:
            print(user_Input,' not an integer!')
    

    【讨论】:

      【解决方案4】:

      最好创建一个函数来接受您的输入。这可以继续提示用户,直到输入有效的数字:

      def get_number(prompt):
          while True:
              try: 
                  return int(input(prompt))
              except ValueError:
                  print("Please enter a number")
      

      然后您可以按如下方式更改输入行:

      userAnswer = get_number("\nYour answer: ")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多