我在Codecademy's Python lesson上尝试了以下内容
hobbies = []
# Add your code below!
for i in range(3):
Hobby = str(raw_input("Enter a hobby:"))
hobbies.append(Hobby)
print hobbies
这样,它可以正常工作,但是如果我尝试
Hobby = raw_input("Enter a hobby:")
我得到
[u'Hobby1', u'Hobby2', u'Hobby3']
。额外的u
来自哪里? 最佳答案
问题的主题行可能会引起误解:Python 2的 raw_input()
通常返回字节字符串,而不是Unicode字符串。
但是,如果它或sys.stdin
已被更改或替换(由应用程序或作为Python的替代实现的一部分),则它可能返回Unicode字符串。
因此,我相信@ByteCommander的评论正确无误:
表面上讲,Codecademy使用的Python是2.7,但是(a)通过使用Emscripten将Python解释器编译为JavaScript来实现的,并且(b)它在浏览器中运行;因此,在这些因素之间,很可能是Codecademy注入(inject)了一些普通的CPython中不存在的字符串编码和解码。
注意:我自己没有使用Codecademy,也没有任何内部了解它的内部运作方式。