2015-02-10 112 views
-2
import random 
import operator 


op = {"+":operator.add, 
     "-":operator.sub, 
     "*":operator.mul} 
num1 = random.randint(0,10) 
num2 = random.randint(0,10) 
ops = random.choice(list(op.keys())) 
print (num1 + int(ops) + num2) 

我试图做一个随机数学题测验,我不明白为什么我不断收到错误:ValueError异常:无效的字面INT()基数为10如何修复错误

Traceback (most recent call last): 
    File "N:/Computer science/A453/Test.py", line 12, in <module> 
    print (num1 + int(ops) + num2) 
ValueError: invalid literal for int() with base 10: '-' 
>>> ================================ 
+4

你为什么试图将随机选择从“+”,“ - ”和“*”转换为整数?你究竟发现了什么?会发生什么?! – jonrsharpe 2015-02-10 12:12:52

+0

怎么可能像一个字符串如'“+”'永远被转换为一个整数? – 2015-02-10 12:13:49

+1

@JoachimPileborg只有2.x,3.x你需要例如'list(op)'而不是'op.keys()',因为你不能索引一个'dict_keys'对象。 – jonrsharpe 2015-02-10 12:14:19

回答

1

尝试在num1和num2上强制使用字符串。既然你在用pringing +你应该使用字符串操作。

print (str(num1) + ops + str(num2)) 
+0

非常感谢你,这是我唯一没有尝试的东西,非常感谢:) – 2015-02-10 12:25:42

+0

在那里,做到了;)不客气。 – Onedot618 2015-02-10 12:28:13

相关问题