' NoneType'错误

时间:2016-12-02 21:46:17

标签: python nonetype

我是Python的新手,我查看了其他代码,但不知道如何从我的代码中删除非类型错误,

tutorial = input("Do you want to do the tutorial? 1 is yes and 0 is no, this will be the same for everything")
if tutorial <1:
    print("That isn't valid")
if tutorial>0:
    print("That isn't valid")
if tutorial == 1:
    print("In battle you can use either sword, magic or items. Sword damage will be between your minimum and maximum damage, magic will be constant and can be used to heal or attack, items can be used to boost attack, restore health or armour")

我收到此错误:

Traceback (most recent call last):
  File "<string>", line 250, in run_nodebug
  File "C:\Users\Bas\Desktop\Game.py", line 50, in <module>
    tutorial = input("Do you want to do the tutorial? 1 is yes and 0 is no, this will be the same for everything")
TypeError: 'NoneType' object is not callable

下面是完整的代码:

playerhealth = 100
playerlow = 10
playerhigh = 30
playerarmour = 50
playermagic = 20
level = 0
xptonextlevel = 200
itemuse = 0

rookhealth = 100
rooklow = 10
rookhigh = 20
rookarmour = 100

medichealth = 150
mediclow = 10
medichigh = 30
medicarmour = 50

rushhealth = 20
rushlow = 10
rushhigh = 10
rusharmour = 30

drillerhealth = 30
drillerlow = 50
drillerhigh = 80
drillerarmour = 20

dragonhealth = 200
dragonlow = 150
dragonhigh = 250
dragonarmour = 150
dragonmagic = 100
dragonl = 45

godhealth = 300
godlow = 250
godhigh = 350
godarmour = 250
godmagic = 200
godl = 50

magehealth = 100
magearmour = 0
magemagic = 50
magel = 10

tutorial = input("Do you want to do the tutorial? 1 is yes and 0 is no, this will be the same for everything")
if tutorial <1:
    print("That isn't valid")
if tutorial>0:
    print("That isn't valid")
if tutorial == 1:
    print("In battle you can use either sword, magic or items. Sword damage will be between your minimum and maximum damage, magic will be constant and can be used to heal or attack, items can be used to boost attack, restore health or armour")

se = input("Input 1 for story or 0 for endless")

1 个答案:

答案 0 :(得分:1)

您收到此错误,因为标识符input已分配值None。在代码中的某处,必须执行以下行。

input = None

NoneType是单例常量None的类型。 如果您尝试这样做,您将收到相同的错误:

>>> None("Do you want to do the tutorial?")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable

Python不会阻止您使用新值覆盖内置函数。有时重新定义函数print会很有用。但在正常情况下,使用inputlistint等作为变量名称是一个坏主意,因为这会导致此类错误。

您可以通过使用字典而不是声明很长的变量列表来减少意外覆盖标识符的可能性。

gamestate = {
    'playerhealth': 100,
    'playerlow': 10,
    'playerhigh': 30,
    'input': None,
    'else': 42,
    ...

您可以将任何字符串用作字典键,而无需担心阴影内置插件。