我的输入怎么不等于答案?

2022-01-14 00:00:00 python string int

问题描述

暂时从 Unity JS 切换到 Python,我无法理解为什么这不起作用.我最好的猜测是变量 guess 实际上是一个字符串,所以字符串 5 与整数 5 不一样?这是正在发生的事情吗?无论怎样解决这个问题.

Switching from Unity JS to Python for a bit, and some of the finer points elude me as to why this does not work. My best guess is that the variable guess is actually a string, so string 5 is not the same as integer 5? Is this what is happening and either way how does one go about fixing this.

import random
import operator

ops = {
    '+':operator.add,
    '-':operator.sub
}
def generateQuestion():
    x = random.randint(1, 10)
    y = random.randint(1, 10)
    op = random.choice(list(ops.keys()))
    a = ops.get(op)(x,y)
    print("What is {} {} {}?
".format(x, op, y))
    return a

def askQuestion(a):
    guess = input("")
    if guess == a:
        print("Correct!")
    else:
        print("Wrong, the answer is",a)

askQuestion(generateQuestion())


解决方案

我假设你使用的是python3.

I am assuming you are using python3.

您的代码的唯一问题是您从 input() 获得的值是字符串而不是整数.所以你需要转换它.

The only problem with your code is that the value you get from input() is a string and not a integer. So you need to convert that.

string_input = input('Question?')
try:
    integer_input = int(string_input)
except ValueError:
    print('Please enter a valid number')

现在您将输入作为整数,您可以将其与 a

Now you have the input as a integer and you can compare it to a

编辑代码:

import random
import operator

ops = {
    '+':operator.add,
    '-':operator.sub
}
def generateQuestion():
    x = random.randint(1, 10)
    y = random.randint(1, 10)
    op = random.choice(list(ops.keys()))
    a = ops.get(op)(x,y)
    print("What is {} {} {}?
".format(x, op, y))
    return a

def askQuestion(a):
    # you get the user input, it will be a string. eg: "5"
    guess = input("")
    # now you need to get the integer
    # the user can input everything but we cant convert everything to an integer so we use a try/except
    try:
        integer_input = int(guess)
    except ValueError:
        # if the user input was "this is a text" it would not be a valid number so the exception part is executed
        print('Please enter a valid number')
        # if the code in a function comes to a return it will end the function
        return
    if integer_input == a:
        print("Correct!")
    else:
        print("Wrong, the answer is",a)

askQuestion(generateQuestion())

相关文章