我似乎无法找到导致语法错误的语句(不是很少)的错误。为了清楚起见,这是用Python 3.4编写的。如果您想查看一些先前的代码,我会愉快地提供一些代码,但就我所知,它并没有引起任何问题。这是for语句;最后一行是为了确保一切都有意义。
编辑:代码现在正确缩进(抱歉)。每个"(dict(item))"声明旨在引用在第3行创建的字典(根据播放器中的哪个项目进行处理,标题会有所不同)。有没有办法在不知道它的情况下调用该词典的名称(显然我的方式根本不起作用)?如果我做了一些完全奇怪的事情,你不得不原谅我,因为我对Python很新,更不用说编码。
编辑2:从&#34更改了问题标题;这究竟是什么导致语法错误?"
for item in playerList:
playerList.index(item) = magicCharacterGenerationIndex
dict(item) = {
'Name' : "",
'Class' : "",
'Skills' : {},
'Inventory' : [],
'Magic' : 0,
'Luck' : 0,
'Gender' : ""
}
(dict(item))['Name'] = playerNames[magicCharacterGenerationIndex]
(dict(item))['Class'] = playerClasses[magicCharacterGenerationIndex]
(dict(item))['Gender'] = playerGenders[magicCharacterGenerationIndex]
(dict(item))['Luck'] = random.randint(2,12)
# This bit populates character skills.
if (dict(item))['Class'] == Knight:
(dict(item))['Skills'] = {
'Appraise': 1,
'Brawl': 2,
'Melee': 3,
'Negotiate': 4,
'Ranged': 3,
'Sneak': 1,
'Status': 4,
'Track': 2,
}
elif (dict(item))['Class'] == Barbarian:
(dict(item))['Skills'] = {
'Appraise': 2,
'Brawl': 4,
'Melee': 4,
'Negotiate': 1,
'Ranged': 1,
'Sneak': 3,
'Status': 2,
'Track': 3,
}
elif (dict(item))['Class'] == Thief:
(dict(item))['Skills'] = {
'Appraise': 4,
'Brawl': 2,
'Melee': 3,
'Negotiate': 1,
'Ranged': 2,
'Sneak': 4,
'Status': 1,
'Track': 3,
}
elif (dict(item))['Class'] == Ranger:
(dict(item))['Skills'] = {
'Appraise': 1,
'Brawl': 2,
'Melee': 3,
'Negotiate': 1,
'Ranged': 4,
'Sneak': 3,
'Status': 2,
'Track': 4,
}
elif (dict(item))['Class'] == Enchanter:
(dict(item))['Skills'] = {
'Appraise': 3,
'Brawl': 1,
'Melee': 1,
'Negotiate': 4,
'Ranged': 2,
'Sneak': 3,
'Status': 4,
'Track': 2,
}
# This next bit populates character inventories.
if (dict(item))['Class'] == Knight:
(dict(item))['Inventory'] = ['Kite Shield','Broadsword','Noble Steed','Lance']
elif (dict(item))['Class'] == Barbarian:
(dict(item))['Inventory'] = ['Dane Axe','Large Chunk of Beef','Spear','Magic Helmet']
elif (dict(item))['Class'] == Thief:
(dict(item))['Inventory'] = ['Dagger','Stolen Coinpurse','Lockpicks and Tools','Throwing Knives (8 Knives)']
elif (dict(item))['Class'] == Ranger:
(dict(item))['Inventory'] = ['Bow','Flint and Steel','Saxe Knife','Sturdy Arrows (36 Arrows)']
elif (dict(item))['Class'] == Enchanter:
(dict(item))['Skills'] = ['Sling','Spellbook','Raven Familiar','Staff of Magic Missiles (4 Charges)']
# This segment eliminates the magic stat for all non-enchanter characters, and gives all enchanters a random Magic stat above 50.
if (dict(item))['Class'] == Enchanter:
(dict(item))['Magic'] = 50 + random.randint(0,50)
else:
del (dict(item))['Magic']
print(dict(item))
答案 0 :(得分:2)
看起来你想要一本字典词典,所以你应该在你的循环之外创建一个空字典:
mydict = {}
然后,您需要使用(dict(item))
替换每个mydict[item]
。您说dict(item) = {...
的第一个引起语法错误,因为您将调用的结果放在赋值的LHS上。
内部括号用于调用语法,因此您需要将它们更改为括号以用于索引语法。正如其他人在评论中暗示的那样,无论如何你都不需要外括号。
你不想继续调用dict() - 每次创建一个新的。
最后,在你实现这一目标之后,你可能会意识到你想要一个类而不是一个字典。属性语法比所有括号和引用都要好得多。