我用Python为自己的游戏制作了字典:
monster = {'name' : 'max', 'attack' : 5, 'health' : 50}
我想用字符串格式打印怪物的健康状况:
print(f'Monster Health : {monster['health']}')
我希望可以打印出怪物的生命值,但是出现错误:
print(f'Monster Health : {monster['health']}')
SyntaxError: invalid syntax
答案 0 :(得分:2)
您正在对f字符串和字典键使用单引号。
只需将f字符串单引号替换为双引号即可:
print(f"Monster Health : {monster['health']}")
记住这一点:
如果使用单引号,则应将双引号引起来。如果您使用双引号,则应将单引号用于引号内。
答案 1 :(得分:1)
您可以在双引号str
中使用单引号,也可以在双引号str
中使用双引号。
monster = {
'name': 'max',
'attack': 5,
'health': 50
}
print(f"Monster Health: {monster['health']}")
print(f'Monster Health: {monster["health"]}')
这两个打印语句都可以使用。
但是,您不能在括号内的f字符串中使用转义序列。
print(f'Monster Health: {monster[\'health\']}')
这将导致SyntaxError: f-string expression part cannot include a backslash
但是,在dict
中使用str
值的更Python方式是使用str.format_map(mapping)
函数。
>>> print('Monster Health: {health}'.format_map(monster))
Monster Health: 50
>>> print('Monster Health: {health}\nMonster Name: {name}\nMonster Attack: {attack}'.format_map(monster))
Monster Health: 50
Monster Name: max
Monster Attack: 5
这允许您仅在keys
中使用str
并将值从dict
插值到str
。
或者,您可以将dict unpacking operator, **
与format()
一起使用。
>>> print('Monster Health: {health}\nMonster Name: {name}\nMonster Attack: {attack}'.format(**monster))
Monster Health: 50
Monster Name: max
Monster Attack: 5