Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_Input - Fatal编程技术网

Python 掷骰子游戏,输入错误:';str';对象不可调用错误

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)

我用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('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()
-如果你还想称之为乐趣,这似乎不是个好主意