在此示例中,我想做一个简单的“联系人”,但是当我输入john时,输出给我n1,其中n是john的最后一个字母。
(如果您知道不用我的搞笑代码的更好方法,也请告诉我)
nums = {
'john': '1',
'mary': '2',
'jake': '3'
}
name = ''
while name != 'exit':
name = input('Name: ')
output = ''
for output in name:
if name == 'exit':
break
output += nums.get(name, ' (not exist)') + ' '
print(output)
答案 0 :(得分:2)
问题:
while
内不需要循环。 for output in name:
实际上遍历name
的每个字符,这不是您想要的。
output += ...
循环内的 for
最后将获取键的最后一个字母并附加值,这就是为什么'n1'
获得'john'
的原因。
代码:
while True:
name = input('Name: ')
if name.lower() == 'exit':
break
output = nums.get(name, ' (not exist)')
print(output)
答案 1 :(得分:0)
您的代码有问题
您不需要for for output in name:
循环,因为它会遍历字符串name
的字符,但是您不需要这样做
循环完成后,输出具有name
的最后一个字符的值,例如output='n'
代表john
,因此您在输出中看到n1
因此,您可以通过在无限循环中询问姓名来运行来修复代码,然后中断循环并在有人键入exit
时退出,否则您可以通过nums.get
从字典中获取元素并打印
nums = {
'john': '1',
'mary': '2',
'jake': '3'
}
name = ''
#Run an infinite loop
while True:
#Get the name from user
name = input('Name: ')
#If user types exit, break the loop
if name == 'exit':
break
#Otherwise either print the number of not exist
print(nums.get(name, ' (not exist)'))
输出看起来像
Name: john
1
Name: mary
2
Name: jake
3
Name: joe
(not exist)
Name: exit