是否可以使用输入创建字典,如果我们在其中输入键的话。输出返回该键的值?

时间:2019-05-04 13:32:37

标签: python dictionary input

在此示例中,我想做一个简单的“联系人”,但是当我输入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)

2 个答案:

答案 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)

您的代码有问题

  1. 您不需要for for output in name:循环,因为它会遍历字符串name的字符,但是您不需要这样做

  2. 循环完成后,输出具有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