Python随机问题程序有时会提供无法回答的问题
下面是一个python函数,它将提供一个问题。然而,有时,它提供的问题会有一个无法回答的重复数字。例如100/9。我可以编辑哪些内容,以便答案始终在小数点后2位以内(如果适用) 这可以通过将某些内容转换为浮点并强制输入2位小数来解决吗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
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()
时要小心。我建议学习字符串格式,它将简化代码的某些部分。最后,变量和函数名通常应遵循带有下划线的小写形式。