【发布时间】:2015-02-10 12:07:52
【问题描述】:
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)
我正在尝试进行随机数学问题测验,但我无法弄清楚为什么我不断收到错误:
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: '-'
>>> ================================
【问题讨论】:
-
您为什么要将随机选择从
'+'、'-'和'*'转换为整数?你到底期望会发生什么?! -
怎么会有一个像 e.g. 这样的字符串?
"+"曾经被转换为整数吗? -
@JoachimPileborg 仅在 2.x 中,在 3.x 中您需要例如
list(op)而不是op.keys(),因为您无法索引dict_keys对象。 -
@jonrsharpe 那么我该怎么做才能解决这个问题,因为我完全感到困惑
-
你想完成什么?你想调用例如键控的函数吗?
"+"(即operator.add)?
标签: python string random int literals