我正在办公室为新手启动一个非常简单的基于文本的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)
目标是使用属性名称和部门的用户输入创建“Player”类的实例。
但是,运行代码当前会产生NameError:name'(无论输入是什么)'未定义
我确信它是非常基本的东西,因为我是python的新手。非常欢迎任何帮助!
答案 0 :(得分:0)
我猜你正在使用python 2运行脚本。我能够在python 3中运行脚本而不会出错。请使用python 3运行脚本。
python3 your-script.py
在python 2中,您将使用raw_input()
内置函数将用户输入作为字符串。 raw_input()
函数接受用户输入并将其转换为字符串(声明为here)。
调用python 2内置input()
函数与在raw_input()
函数的输出上调用eval()
相同。因此这两个电话是相同的:
a = input("Enter a number: ")
b = eval(raw_input("Enter a number: ")
在python 3中,raw_input()
内置函数不存在。要获得用户输入,您可以使用input()
内置函数。 python 3中的input()
相当于python 2中的raw_input()
。
答案 1 :(得分:0)
输入([提示]) - >值
相当于eval(raw_input(prompt))。
如果您不想评估输入的文本,请改用 raw_input()
。
正如评论中所建议的,这仅适用于Python2,但是您的错误表明您使用的是Python版本。
我建议您将以下shebang添加到您的文件中:#!/usr/bin/env python3
然后在允许执行脚本后使用./mypythongame.py
启动程序
此外,您的Character
类必须继承object
才能使用super(Character, self).__init__()
或(在Python3中)调用:super().__init__()