为什么空格不是input()的分隔符?

时间:2014-11-15 22:24:29

标签: python input delimiter

我是Python的新手。在Python中input()raw_input()逐行读取,而在C / C ++中,读取输入的默认分隔符是空格。

我知道我可以使用split()来获取列表。没有空格作为默认输入分隔符有什么意义吗?

2 个答案:

答案 0 :(得分:2)

在Python 2中input()接受来自用户的一行代码,执行它并返回结果 - 因此逐行而不是逐字逐行阅读只是因为它使得该过程更容易。 raw_inputinput的双胞胎,但它没有尝试评估输入的内容,只是将其作为str返回。

运行用户输入也非常危险,这就是为什么它在Python 3中删除了,而raw_input占用了input的位置。

Python 2

--> test_var = input('enter a number: ')
# user enters "71 + 9" (without quotes), Python tries to run the text entered
--> test_var
# 80
--> type(test_var)
# <type 'int'>

--> test_var = raw_input('enter another number: ')
# user enters "99 - 9", Python simply gives back the string '99 - 9'
--> test_var
 # '99 - 9'
--> type(test_var)
# <type 'str'>

--> test_var = input('enter something')
# user enters "howdy" (without the quotes)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'howdy' is not defined

答案 1 :(得分:0)

在Python中,输入默认类型为string,在string对象的值中,允许使用空格(例如s = "Bob Fred")。 split(delim)用于按指定的分隔符分割字符串对象(如果将delim参数留空,则默认分隔符在此处为空格)。

我认为这是默认选择(设计决策),因为您很快就会意识到将字符串转换为整数,浮点数等类型的数据类型非常简单。