随机数和大写结果而不是数字->

时间:2019-04-23 21:28:45

标签: python

我正在使用此计算器,但是我一直得到的输出是函数ops在0x03B0B858而不是一个数字,而且我不太确定自己在做什么错。...

计算器会问三个问题,第一个数字,运算符和第二个数字。如果您在询问第一个数字和第二个数字时输入字母或数字以外的任何其他字符,它将告诉您您输入的内容无效,并要求您再次输入一个有效数字,问题是我正在尝试输入也可以使用在函数ops()中定义的运算符来执行此操作,但是无论我在运算符中键入什么内容,结果始终是随机字母和数字。...这是下面的代码,您可以复制过去并尝试一下,看看我的意思是什么。

{{1}}

1 个答案:

答案 0 :(得分:0)

首先:
-要运行函数“ ops”,您应该调用print(ops()),不要忘记括号
-尝试将代码放入函数中,否则,您的函数将无法识别变量'op'
-您无法像这样检查变量“ op”的内容

op != '+' or '-' or '/' or '*'

这将被评估为单个布尔值“ OR”,
您的代码应改为:

if op not in ['+' , '-' , '/' , '*']:
   do smthg...

编辑2:
完整的解决方案:

def ops():
    try:
        num1 = float(input('Enter the first number: '))
    except ValueError:
        print('Invalid number')
        num1 = float(input('Enter first number again: '))

    op = input('Enter operator:')
    try:
        num2 = float(input('Enter the second number: '))
    except ValueError:
        print('Invalid number')
        num2 = float(input('Enter second number again: '))

    if op not in ['+' , '-' , '/' , '*']:
        op = input('Invalid Operator, please enter operator: ')
    if op == '+':
        return num1 + num2
    elif op == '-':
        return num1 - num2
    elif op == '*':
        return num1 * num2
    elif op == '/':
        return num1 / num2

print(ops())