Variab的数学符号

2024-09-24 00:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学校有一个挑战,但我被困在我的一小部分代码。你知道吗

以下是我所拥有的;我缺少的是如何完成answer =行:

while (questions <= 9):
    randoms()
    print("What is: ", num1, symbol, num2,"?:")
    uanswer = int(input())
    answer = 
    if uanswer == answer:
        correct = correct + 1
    else:
        incorrect = incorrect + 1
    questions = questions + 1

变量num1num2symbol是随机生成的,num1num2都是整数,symbol'+''-''*''/'我想知道如何用这些来得到一个方程的答案。你知道吗

例如,num150symbol'-'num225。如何使用这些变量来得到答案25?你知道吗


Tags: 答案代码answersymbolwhat学校questionsprint
2条回答

我认为最好的办法是创造条件并检查符号。。你知道吗

if symbol=='-':
   res = num1 - num2
elif symbol=='+':
   res = num1 + num2

最简单的方法是创建从符号到函数的映射。你知道吗

唯一的问题是,+运算符背后的函数是什么?你知道吗

答案在^{}模块中:a + boperator.add(a, b),依此类推。所以:

import operator

symbols = {
    '+': operator.add,
    '-': operator.sub,
    '*': operator.mul,
    '/': operator.floordiv
}

我在这里假设你希望100 / 333,而不是33.333333333333336。如果我错了,用truediv代替上面的floordiv。(请参阅教程中的Numbers以了解差异的介绍,并提供指向更多详细信息的链接。)

不管怎样,现在,你可以这样做:

answer = symbols[symbol](num1, num2)

即使没有operator,也可以为每个操作符构建一个函数:

symbols = {
    '+': (lambda a, b: a + b),
    '-': (lambda a, b: a - b),
    '*': (lambda a, b: a * b),
    '/': (lambda a, b: a // b)
}

如果您想将您的语言扩展到Python中没有匹配运算符的符号,这可能很有用。你知道吗


如果您的数学语言是Python表达式语言的一个严格子集(可能没有注意到符号'/'映射到Python运算符//,如果您想要整数),并且您确信您永远不会以一种不需要的方式扩展它(例如,使用^进行指数运算),而且您肯定永远不会使用您自己没有生成的任何数字或符号,只构建一个Python表达式并^{}它可能更简单:

expr = '{} {} {}'.format(num1, symbol, num2)
answer = eval(expr)

但是,在使用eval时,您应该始终小心;如果要做的干净的事情足够简单,您可以编写、阅读并稍后理解,那么它几乎总是一个更好的答案。你知道吗

相关问题 更多 >