我做错了什么

时间:2018-04-03 06:14:38

标签: python-3.x

import sys

super_heroes = {'Iron Man' : 'Tony Stark',
            'Superman' : 'Clark Kent',
            'Batman' : 'Bruce Wayne',
            }

print ('Who is your favorite Superhero?')

name = sys.stdin.readline()

print ('Do you know that his real name is', super_heroes.get(name))

我在这里做了一个简单的代码,它应该读取字典中的输入并在一串字母后打印出来,但是当它运行时打印出来

" 谁是你最喜欢的超级英雄?

钢铁侠

你知道他的真名是 "

即使输入在我的字典中。

3 个答案:

答案 0 :(得分:2)

您的输入在行尾有换行符。

我在网上尝试过REPL。 Check it

尝试按照解决方法。

name = sys.stdin.readline().strip()

剥离Check here

之后

答案 1 :(得分:1)

sys.stdin.readline()返回包含换行符的输入值,这不是您所期望的。您应该将sys.stdin.readline()替换为input()raw_input(),这是从用户获取输入值的更多pythonic方式,而不包括换行符。 raw_input()最好确保返回的值是字符串类型。

为了更进一步,您可以添加一个测试if name in super_heroes:,以便在您的收藏超级英雄名称不在您的词典中时执行特定操作(而不是打印None)。这是一个例子:

super_heroes = {'Iron Man' : 'Tony Stark',
                'Superman' : 'Clark Kent',
                'Batman' : 'Bruce Wayne',
               }

print ('Who is your favorite Superhero?')

name = raw_input()

if name in super_heroes:
    print ('Do you know that his real name is', super_heroes[name], '?')
else:
    print ('I do not know this superhero...')

答案 2 :(得分:0)

sys.std.readline()在用户输入结尾添加换行符,您可能需要在获得超级英雄之前替换它:

name = name.replace('\n','')