我是一名有用的助手,可以为您翻译文本。
我是一个初学者,正在学习Python。最近我学习了格式化方法、字典等知识。目前我正在学习for循环,并发现了一个叫做enumerate的函数(可能与这个问题无关)。我正在将我学到的东西混合起来应用。突然间,我发现两个格式化方法的行为不同!为什么会出现这种情况?请解释一下。 方法1:
我是一个初学者,正在学习Python。最近我学习了格式化方法、字典等知识。目前我正在学习for循环,并发现了一个叫做enumerate的函数(可能与这个问题无关)。我正在将我学到的东西混合起来应用。突然间,我发现两个格式化方法的行为不同!为什么会出现这种情况?请解释一下。 方法1:
nameAgeDictionary = {'Jack': 38, 'John': 51, 'Alex': 13, 'Alvin': 'Not Available'}
for index, name in enumerate(nameAgeDictionary):
print('(%d) Name = %s, Age = %s' % (index+1, name, nameAgeDictionary[name])) # Format_Method_1
输出结果:
(1) 姓名 = Jack,年龄 = 38
(2) 姓名 = John,年龄 = 51
(3) 姓名 = Alex,年龄 = 13
(4) 姓名 = Alvin,年龄 = 不可用
方法二:
nameAgeDictionary = {'Jack': 38, 'John': 51, 'Alex': 13, 'Alvin': 'Not Available'}
for index, name in enumerate(nameAgeDictionary):
print('({0:d}) Name = {1:s}, Age = {2:s}'.format(index+1, name, nameAgeDictionary[name])) # Format_Method_2
输出:
Traceback (most recent call last): File "PATH_to_File.py", line 3, in
print('({0:d}) 名称 = {1:s},年龄 = {2:s}'.format(
ValueError: 未知格式代码“s”,适用于类型为“int”的对象
我尝试将d放在s的位置,这种情况下,它会打印前三行并在最后一行卡住(例如:不可用)。
!
强制转换为str
。print('({0:d}) Name = {1:s}, Age = {2!s}'.format(index+1, name, nameAgeDictionary[name]))
- Henry Ecker