Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Str对象没有属性";加上「;_Python - Fatal编程技术网

Python Str对象没有属性";加上「;

Python Str对象没有属性";加上「;,python,Python,有人能帮我解决这个问题吗: import random import operator from operator import add, sub, mul from random import randint score = 0 name = input("What is your name? ") for i in range(10): n1 = randint(1,10) n2 = randint(1,10) ops =[["+", operator.add]

有人能帮我解决这个问题吗:

import random
import operator
from operator import add, sub, mul
from random import randint

score = 0

name = input("What is your name? ")

for i in range(10):
    n1 = randint(1,10)
    n2 = randint(1,10)
    ops =[["+", operator.add],["-", operator.sub],["*", operator.mul]]

    randomOp = random.choice(list(ops))

    operator = randomOp[0]
    op = randomOp[1]

    prod = op(int(n1), int(n2))

    ask = ("What is",int(n1),operator,int(n2),"?")

    ans = input(ask)
    if ans == ("%d" % (prod)):
        print ("That's right -- well done")
        score = score + 1
    else:
        print ("No, The answer is %d. " % (prod))

print (name, "I asked you 10 questions. You got %d of them right." % (score))
print ("Quiz is finished")

您为
运算符
名称分配了一个字符串:

operator = randomOp[0]
您现在正在屏蔽
操作员
模块。不要重复使用这样的名称,因为
for
循环
操作符.add
的下一次迭代现在尝试查找该字符串上的
add
属性(因此无论第一次迭代是通过随机选择选择哪个,
'+'
'-'
还是
'*'

您还直接导入了3个函数:

import operator
from operator import add, sub, mul
因此,一个简单的解决方案是使用这3个名称,而不是引用模块上的函数:

ops = (("+", add), ("-", sub), ("*", mul))

我使用元组而不是列表(因为更改代码中的
ops
序列可能会出错)。您也可以将该分配移出
for
循环;在每次迭代中重新创建它没有什么意义。

欢迎使用堆栈溢出!与流行的观点相反,堆栈溢出不是一种调试服务。你确实需要自己先做一些工作。例如,您需要告诉我们您的代码应该做什么,您期望发生什么,以及您认为问题可能在哪里。另请参阅和链接的博客文章。在这种情况下,我能够很快猜测您是如何得到错误的,但是如果您发布了完整的回溯,我们就不必猜测了。