Python类属性中使用用户输入的姓名错误

2024-04-26 01:40:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我办公室的新手构建一个非常简单的基于文本的RPG。目前,我正在尝试使用用户输入来创建类的实例。使用自己的输入定义播放器。你知道吗

这是我当前的代码:

# DEFINE CLASSES #
class Character:
    def __init__(self, name, dept):
        self.name=name
        self.dept=dept
class Player(Character):
    def __init__(self, name, dept, level):
        super().__init__(name, dept)
        self.level = level
class Item:
    def __init__(self, name, position, unlocked):
        self.name=name
        self.position = position
        self.unlocked = unlocked
# USER INPUT # 
User = Player(str(input("What is your name?")),str(input("What dept do you work for?")),1)

我们的目标是用用户输入的name和dept属性创建一个类Player的实例

但是,运行代码当前会出现NameError:name'(无论输入是什么)未定义

我确信这是一个非常基本的东西,因为我是python新手。欢迎任何帮助!你知道吗


Tags: 实例代码用户nameselfinitdefposition
2条回答

我猜您正在使用python2运行脚本。我能够在python3中无错误地运行脚本。请用python3运行脚本。你知道吗

python3 your-script.py

在python2中,可以使用raw_input()内置函数以字符串的形式获取用户输入。raw_input()函数接受用户输入并将其转换为字符串(声明为here)。 调用python2内置的^{}函数与对raw_input()函数的输出调用^{}相同。因此,这两个调用是相同的:

a = input("Enter a number: ")  
b = eval(raw_input("Enter a number: ")

在python3中,raw_input()内置函数不存在。要获取用户输入,可以使用input()内置函数。^python3中的{}等价于python2中的raw_input()。你知道吗

来自Python documentation

input([prompt]) -> value

Equivalent to eval(raw_input(prompt)).

如果不希望对输入的文本求值,请改用raw_input()。 你知道吗

正如注释中所建议的,这只适用于Python2,但是您的错误表明这是您正在使用的Python版本。你知道吗

我建议您将以下shebang添加到您的文件:#!/usr/bin/env python3

然后在允许执行脚本之后,用./mypythongame.py启动程序

此外,您的Character类必须从object继承才能用super(Character, self).__init__()或(在Python3中):super().__init__()

相关问题 更多 >