Python随机问题程序有时会提供无法回答的问题

Python随机问题程序有时会提供无法回答的问题,python,Python,下面是一个python函数,它将提供一个问题。然而,有时,它提供的问题会有一个无法回答的重复数字。例如100/9。我可以编辑哪些内容,以便答案始终在小数点后2位以内(如果适用) 这可以通过将某些内容转换为浮点并强制输入2位小数来解决吗 import random def genKnow(): questions = {} score = 0 for i in range (1): int_a = random.randint(0,100) int_b = rand

下面是一个python函数,它将提供一个问题。然而,有时,它提供的问题会有一个无法回答的重复数字。例如100/9。我可以编辑哪些内容,以便答案始终在小数点后2位以内(如果适用)

这可以通过将某些内容转换为浮点并强制输入2位小数来解决吗

import random

def genKnow():
  questions = {}
  score = 0

  for i in range (1):
    int_a = random.randint(0,100)
    int_b = random.randint(0,100)
    operators = ['+','-','*','/']
    operator_value = random.choice(operators)
    question = str(int_a)+''+str(operator_value)+''+str(int_b)
    answer = eval(question)
    question+=': '

    questions.update({question:str(answer)})

  for q in questions.keys():
    user_answer = input(q)

    if questions.get(q) == str(user_answer):
      score+=1
      print("Well Done!")
    else:
      print("Bummer!")

  print("you got "+str(score)+" Congrats!")
  input("Press enter to close this program")
  genKnow()

print("Welcome to the game")
genKnow()

对于除法,只有你可以作弊,相反的求和。取一个随机值和一个随机结果,然后应用运算符的倒数得到和的另一个因子。例如,使用随机数
100
9
以及运算符
/
,您可以

___ / 100 = 9
其中
9
是答案。因此,您想在问题中提出的未知问题是逆运算
100*9
,因此最终结果是

900/100 = ____
而且你要保密,因为这是答案


对于乘法、加法和减法,您不需要更改任何内容。

如果选择了除法运算符,则将生成问题的方式更改为a*b/a=b

e、 g。 选择是(100,9,“/”)
问题=str(int_a*int_b)+''+str(运算符值)+''+str(int_a)

answer=int_b

我假设你所说的无法回答的问题的意思是,答案不是整数如果是这样的话,你可以在你的代码中找到一些东西,看看这个数字是否是整数,如果不是再次生成问题,我想这会解决问题

我大约一小时后回到代码,我我想出了自己的解决办法。 谢谢大家的帮助,但我现在想起来,我的解决方案相当简单

解决办法是:

answer = round(eval(question),2)

要将答案四舍五入到小数点后2位,因此在运行时,如果需要,您必须将答案四舍五入到小数点后2位。当涉及整数时,这一点保持不变。

到底是什么问题?你有没有想过一个解决方案,你知道从哪里开始吗?使用
eval()
时要小心。我建议学习字符串格式,它将简化代码的某些部分。最后,变量和函数名通常应遵循带有下划线的
小写形式。