Python 掷骰子游戏,输入错误:';str';对象不可调用错误
我用Python 3编写了一个小游戏,如果输入不是“停止”,我想重复掷骰子。如果我写stop,它将停止程序,所以这是可行的,但当我写其他东西时,它不会重复。 以下是源代码:Python 掷骰子游戏,输入错误:';str';对象不可调用错误,python,python-3.x,input,Python,Python 3.x,Input,我用Python 3编写了一个小游戏,如果输入不是“停止”,我想重复掷骰子。如果我写stop,它将停止程序,所以这是可行的,但当我写其他东西时,它不会重复。 以下是源代码: print('Throw the dices, then type stop if you want to stop') from random import * while input != 'stop': random1 = randint(1, 6) random2 = randint(1, 6)
print('Throw the dices, then type stop if you want to stop')
from random import *
while input != 'stop':
random1 = randint(1, 6)
random2 = randint(1, 6)
print('The numbers are: ', random1,' ', random2)
input = input()
您使用“输入”作为变量名和变量名。 在调用输入变量时,第一个Python解释它就像一个str类型的变量。尝试将该名称更改为,即inp,然后查看其行为
编辑:在循环开始之前,您还必须将inp定义为ie.“。您使用“输入”作为变量名和变量名。 在调用输入变量时,第一个Python解释它就像一个str类型的变量。尝试将该名称更改为,即inp,然后查看其行为
编辑:在循环开始之前,您还必须将inp定义为ie.。您的错误源于您正在覆盖
输入。在第二次迭代中,input
不再是一个函数,而是一个字符串。使用其他名称,如用户输入
对变量使用诸如sum
、input
、max
等名称是一个常见错误。应该避免这些,因为它们会覆盖
尽管如此,我还是要指出,在输入给定值之前,可以使用迭代输入
作为旁注,请尽量避免使用import*
,并将导入保持在脚本的顶部。您的错误源于您正在覆盖输入。在第二次迭代中,input
不再是一个函数,而是一个字符串。使用其他名称,如用户输入
对变量使用诸如sum
、input
、max
等名称是一个常见错误。应该避免这些,因为它们会覆盖
尽管如此,我还是要指出,在输入给定值之前,可以使用迭代输入
作为旁注,尽量避免使用import*
,并将导入放在脚本的顶部。我认为可能有一些事情让您(以及其他Python新用户)感到困惑。这个答案将试图澄清为什么你看到的错误听起来很迂腐
1)可调用意味着什么?
Callables是可以通过将()
放在所述对象的末尾来调用的对象(有些Callables接受参数,但现在我们假设它们不接受参数)。例如,内置函数input
是可调用的。例如,您可以像您的程序一样执行input()
。您可以在此处阅读有关该主题的更多详细信息:
2)一流功能
与您可能习惯的其他语言(如Java)不同,Python具有一流的函数。这意味着您可以为函数赋值,并像对象一样传递它们。这是非常强大的编程。但是,这也意味着您可以跳过内置函数,如input
,而将input
分配给字符串。这就是你的程序所做的
3)无法调用字符串
字符串是不可调用的数据类型。调用或执行字符串意味着什么?因此,如果您有x=“my_super\u string”
,x()
没有任何意义。因此,如果您这样做,Python解释器将给您一个TypeError
,说明无法调用字符串
下面是代码中发生了什么以及为什么出现TypeError
:
>>> input
<built-in function input>
>>> input = input()
"some string."
>>> input
'some string.'
>>> input()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
>>输入
>>>输入=输入()
“一些绳子。”
>>>输入
“一些绳子。”
>>>输入()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“str”对象不可调用
请注意名称input
是如何从
更改为字符串'some\u string.
我认为可能有一些事情让您(以及其他Python新用户)感到困惑。这个答案将试图澄清为什么你看到的错误听起来很迂腐
1)可调用意味着什么?
Callables是可以通过将()
放在所述对象的末尾来调用的对象(有些Callables接受参数,但现在我们假设它们不接受参数)。例如,内置函数input
是可调用的。例如,您可以像您的程序一样执行input()
。您可以在此处阅读有关该主题的更多详细信息:
2)一流功能
与您可能习惯的其他语言(如Java)不同,Python具有一流的函数。这意味着您可以为函数赋值,并像对象一样传递它们。这是非常强大的编程。但是,这也意味着您可以跳过内置函数,如input
,而将input
分配给字符串。这就是你的程序所做的
3)无法调用字符串
字符串是不可调用的数据类型。调用或执行字符串意味着什么?因此,如果您有x=“my_super\u string”
,x()
没有任何意义。因此,如果您这样做,Python解释器将给您一个TypeError
,说明无法调用字符串
下面是代码中发生了什么以及为什么出现TypeError
:
>>> input
<built-in function input>
>>> input = input()
"some string."
>>> input
'some string.'
>>> input()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
>>输入
>>>输入=输入()
“一些绳子。”
>>>输入
“一些绳子。”
>>>输入()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“str”对象不可调用
请注意名称input
是如何从
变为字符串'some\u string.
input=input()
-如果你还想称之为乐趣,这似乎不是个好主意