我的输入怎么和答案不一样呢?

2025-04-15 09:21:00
admin
原创
29
摘要:问题描述:我从 Unity JS 切换到 Python 一段时间了,但有些细节问题我还是不明白为什么它不起作用。我猜测这个变量guess实际上是一个字符串,所以字符串 5 和整数 5 不一样?这是怎么回事?无论如何,该如何解决这个问题?import random import operator ops = ...

问题描述:

我从 Unity JS 切换到 Python 一段时间了,但有些细节问题我还是不明白为什么它不起作用。我猜测这个变量guess实际上是一个字符串,所以字符串 5 和整数 5 不一样?这是怎么回事?无论如何,该如何解决这个问题?

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())

解决方案 1:

我假设你正在使用 python3。

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

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

现在,您输入的是整数,您可以将其与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())

解决方案 2:

是的,你说得完全正确,这"5"与 不同5。你可以5使用 将其转换为字符串str(5)。另一种方法是"5"使用 将其转换为整数,int("5")但这种方法可能会失败,因此最好处理异常。

因此,您的程序的更改可能如下所示:

if guess == str(a):

而不是:

if guess == a:

另一种选择是将猜测值转换为整数,如另一个答案中解释的那样。

编辑:这仅适用于 Python 版本 2.x:

但是,您使用的是input(),而不是raw_input()input()如果您输入的是整数,它会返回一个整数(如果您输入的文本不是有效的Python表达式,则会失败)。我测试了您的程序,它询问What is 4 - 2?;我输入了2,它说 ,Correct!所以我不明白您的问题是什么。

你有没有注意到,如果你的程序询问What is 9 - 4?你是否可以输入9 - 4,它却说Correct!?那是因为你使用了input(),而不是raw_input()。同样,如果你输入,例如c,你的程序会失败,并显示NameError

不过,我会使用raw_input()并将答案与str(correct_answer)

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用