好的,所以代码是
Pdmg = (lambda x: (round(x*0.75), round(x*1.0)))(['stats']['PStrength'])
Mdmg = (lambda x: (round(x*0.75), round(x*1.0)))(['stats'['PDexterity'])
HP = 4 * ['lvl'] * ['stats']['PVitality']
Mage = {'name' : 'Mage',
'Class' : 'Player',
'Sub-Class' : 'Mage',
'lvl' : 1,
'xp' : 26,
'lvlNext' : 25,
'Weak' : {'Lightning'},
'Normal' : {'Shock'
'Burn'
'Water'
'Freeze'},
'Resistance' : {'Ice'
'Fire'},
'Null' : {'Poison'},
'stats': {'PStrength' : 5,
'PProsperity' : 5,
'PDexterity' : 15,
'PVitality' : 5,
'PAgility' : 10,
'hp' : 'HP',
'MP' : 50}}
我收到错误“列表索引必须是整数,而不是str”我该如何解决这个问题? (另外我已经阅读了一些有这样问题的帖子,他们真的没有帮助我,所以请不要把我发给另一篇帖子。)
答案 0 :(得分:2)
这是你的问题:
['stats']['PVitality']
这相当于以下内容:
my_list = [
'stats'
]
my_list['PVitality']
在编辑之前很难告诉你如何解决这个问题,但现在我看到了你正在使用的数据结构。
你想要这样的东西:
Mage['stats']['PStrength']
虽然在使用之前必须先定义Mage
。
惯用Python不会在这里使用lambda
,因为所有lambda
正在做的是避免临时变量泄漏到封闭范围内。更惯用的是:
x = Mage['stats']['PStrength']
Pdmg = round(x*0.75), round(x*1.0)
或类似的东西:
def stat_damage(stat):
"""Calculate damage (foo, bar) from stat value."""
return round(x*0.75), round(x*.10)
然而,代码风格是一种品味问题,lambda
在这里可以正常运行。这对其他Python程序员来说只是一个惊喜。
答案 1 :(得分:0)
嗯,显而易见的答案是退出使用字符串作为列表索引。如果 stats,PStrength 及其同源词是变量,只需删除引号即可。
您还必须提供您要索引的列表的名称。
您最近的修改是一个很大的改进。这有两个至关重要的致命问题:
修复这些......
// Establish XenCenter session
session = new Session(HostName, 80);
// Authenticate with username and password. The third parameter tells the server which API version we support.
session.login_with_password(XenUserName, XenPassword, API_Version.API_1_3);
List<XenRef<Host>> pools = Host.get_all(session);
foreach (XenRef<Host> pool in pools)
{
// Get all records associated with this specific VM server
Host host = Host.get_record(session, pool);
// Get all records associated with this specific VM server resources.
List<XenRef<VM>> residentVms = host.resident_VMs;
foreach (var vm in residentVms)
{
VM vmRecord = VM.get_record(session, vm);
}
输出:
Mage = {'name' : 'Mage',
'Class' : 'Player',
'Sub-Class' : 'Mage',
'lvl' : 1,
'xp' : 26,
'lvlNext' : 25,
'Weak' : {'Lightning'},
'Normal' : {'Shock'
'Burn'
'Water'
'Freeze'},
'Resistance' : {'Ice'
'Fire'},
'Null' : {'Poison'},
'stats': {'PStrength' : 5,
'PProsperity' : 5,
'PDexterity' : 15,
'PVitality' : 5,
'PAgility' : 10,
'hp' : 'HP',
'MP' : 50}}
Pdmg = (lambda x: (round(x*0.75), round(x*1.0)))(Mage['stats']['PStrength'])
Mdmg = (lambda x: (round(x*0.75), round(x*1.0)))(Mage['stats']['PDexterity'])
HP = 4 * Mage['lvl'] * Mage['stats']['PVitality']
print Pdmg, Mdmg, HP
我还修复了 Mdmg 行中缺少的左括号。