Python 带数学运算符的字符串在此处不起作用

Python 带数学运算符的字符串在此处不起作用,python,math,Python,Math,我是Python新手,所以我似乎无法运行以下程序 import random num1=0 num2=0 num1=int(random.randint(1,20)) num2=int(random.randint(1,20)) result=0 opr = ("*", "-", "+", "/") print(random.choice(opr)) print(num1,num2) if opr=="*": result = num1 * num2 if opr=="+":

我是Python新手,所以我似乎无法运行以下程序

    import random
num1=0
num2=0

num1=int(random.randint(1,20))
num2=int(random.randint(1,20))
result=0
opr = ("*", "-", "+", "/")
print(random.choice(opr))
print(num1,num2)

if opr=="*":
    result = num1 * num2
if opr=="+":
    result = num1 + num2
if opr=="-":
    result = num1 - num2
if opr=="/":
    result = num1 / num2    
    print(result)

opr
仍然引用4个运算符的整个元组-因此如果
检查,它将不会通过任何
。您需要将新变量(甚至是
opr
本身)设置为
random.choice(opr)
,并在
if
语句中使用该变量。

opr始终是运算符列表。因此,if语句的计算结果永远不会为真。更改此项:

opr = ("*", "-", "+", "/")
print(random.choice(opr))
为此:

opr_list = ("*", "-", "+", "/")
opr = random.choice(opr_list)
print(opr)

您的代码将正常工作。

代码中有几点:


首先,不需要初始化变量就可以直接影响后面的值。您可以更改:

num1=0
num2=0
num1=int(random.randint(1,20))
num2=int(random.randint(1,20))

num1=int(random.randint(1,20))
num2=int(random.randint(1,20))
(实际上,我会将名称
num1
num2
更改为不同的名称,因为它们的含义相当广泛)


第二次,您使用
元组
初始化
opr
,只打印随机选择,不影响它

而不是:

opr=(“*”、“-”、“+”、“/”)
打印(随机选择(opr))
你应该做:

opr=(“*”、“-”、“+”、“/”)
选择的\运算符=随机选择(opr)
打印(所选的_运算符)
实际上,你可以这样做:

selected_操作符=随机选择(“*”、“-”、“+”、“/”)
打印(所选的_运算符)

最后,仅在选择了
/
的情况下打印结果:

如果opr==“*”:
结果=num1*num2
如果opr==“+”:
结果=num1+num2
如果opr==“-”:
结果=num1-num2
如果opr==“/”:
结果=num1/num2
打印(结果)
这应更改为:


这段代码应该可以做到这一点

import random
num1=0
num2=0

num1=int(random.randint(1,20))
num2=int(random.randint(1,20))
result=0
opr = ("*", "-", "+", "/")
print(num1,num2)

newOpr = random.choice(opr)

print(newOpr)

if newOpr=="*":
    result = num1 * num2
if newOpr=="+":
    result = num1 + num2
if newOpr=="-":
    result = num1 - num2
if newOpr=="/":
    result = num1 / num2    
print(result)

出现问题的原因是
random.choice(opr)
没有将
opr
设置为元组中的随机值。它只生成一个,而不处理它。将其分配给变量允许您比较/更改其值等。

我已对您的代码进行了两次更改,其工作方式与您预期的一样

  • 您没有将随机
    opr
    保存到新变量。你是 尝试使用此选项打印随机
    opr
    print(random.choice(opr))
    ,它将打印随机
    opr
    ,但是 它的值始终是一个元组

  • 我只是将if条件改为if和elf,这样,如果第一个条件匹配,它就不会检查其他条件

  • 您错过了缩进:

    ...
    if opr=="/":
        result = num1 / num2    
        print(result)
    
    应成为:

    if opr=="/":
        result = num1 / num2    
    print(result) # !!!
    

    import python
    至少应该从第1列开始。您得到的错误是什么?在条件说明问题所在之前,先执行一点
    print(opr)
    ...
    if opr=="/":
        result = num1 / num2    
        print(result)
    
    if opr=="/":
        result = num1 / num2    
    print(result) # !!!