我是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)
答案 0 :(得分:1)
opr始终是运算符的列表。因此,您的if语句永远不会评估为true。更改此:
opr = ("*", "-", "+", "/")
print(random.choice(opr))
对此:
opr_list = ("*", "-", "+", "/")
opr = random.choice(opr_list)
print(opr)
您的代码将起作用。
答案 1 :(得分:0)
opr
仍指4个运算符的整个元组-因此它不会通过任何if
检查。您需要将一个新变量(甚至是opr
本身)设置为random.choice(opr)
并在if
语句中使用它。
答案 2 :(得分:0)
代码中的一些内容:
首先,您无需初始化变量即可立即影响值。您可以更改:
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
初始化tuple
,并且只打印随机选择,而不会影响它。
代替:
opr = ("*", "-", "+", "/")
print(random.choice(opr))
您应该这样做:
opr = ("*", "-", "+", "/")
chosen_operator = random.choice(opr)
print(chosen_operator)
实际上,您可以这样做:
chosen_operator = random.choice(("*", "-", "+", "/"))
print(chosen_operator)
最后,仅在选择/
的情况下才打印结果:
if opr=="*":
result = num1 * num2
if opr=="+":
result = num1 + num2
if opr=="-":
result = num1 - num2
if opr=="/":
result = num1 / num2
print(result)
这应该更改为:
if opr=="*":
result = num1 * num2
if opr=="+":
result = num1 + num2
if opr=="-":
result = num1 - num2
if opr=="/":
result = num1 / num2
# Note that it is not on the same level of indentation than in your code
print(result)
答案 3 :(得分:0)
此代码应该可以解决问题
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
设置为来自元组的随机值。它只会生成一个,而对此不执行任何操作。将其分配给变量可以让您比较/更改其值等。
答案 4 :(得分:0)
我对您的代码进行了两项更改,并且按预期工作。
您没有将随机opr
保存到新变量。你是
尝试使用此命令打印随机opr
print(random.choice(opr))
,它将打印随机的opr
,但
它的值一直是元组。
我只是将条件更改为if and elf
,以便如果第一个条件匹配,它将不会检查其他
import random
num1=0
num2=0
num1=int(random.randint(1,20))
num2=int(random.randint(1,20))
result=0
opr = ("*", "-", "+", "/")
print(num1,num2)
new_opr = random.choice(opr)
print(new_opr)
if new_opr=="*":
result = num1 * num2
elif new_opr=="+":
result = num1 + num2
elif new_opr=="-":
result = num1 - num2
elif new_opr=="/":
result = num1 / num2
print(result)
答案 5 :(得分:0)
您缩进了它:
...
if opr=="/":
result = num1 / num2
print(result)
应成为:
if opr=="/":
result = num1 / num2
print(result) # !!!