我正在制作一个程序,可以跟踪许多人的一些事情,但我遇到了问题。我的代码如下所示:
johnny_appleseed = ["", 1]
def add_hour(name, hours):
name[1] += hours
def edit_profile():
input_name = input("Profile to edit: ")
hours = input("Hours to add: ")
name = input_name.lower().replace(" ", "_")
add_hour(name, hours)
edit_profile()
但是,当我在"Profile to edit: "
输入中键入“Johnny Appleseed”并选择一些小时时,它会为行name[1] += hours
提供以下错误:
TypeError: 'str' object does not support item assignment
我做错了什么,如何解决?
答案 0 :(得分:0)
我认为你的问题是你认为这会让字符串混淆#johnny_appleseed"使用变量johnny_appleseed,它们不是同一个东西。如果您想跟踪各种人的工作小时数,可以使用字典。我已经研究过你的代码来实现字典部分。
people = {"johnny_appleseed" : 1}
def add_hour(name, hours):
people[name] += hours
def edit_profile():
name = str(raw_input("Profile to edit: "))
hours = int(raw_input("Hours to add: "))
name = name.lower().replace(" ", "_")
add_hour(name, hours)
通过这种实现,您可以使用您获得的字符串来索引python字典中的值。如果你想添加一个新人,你就会......人们[" sam"] = 0.然后会有一个新人" sam"在你的人物词典中工作0小时。
所以,你的错误是你认为你可以用同名的字符串调用变量johnny_appleseed,你不能这样做。你必须做点别的事。