具有for循环值的多个float input()

时间:2019-03-10 12:55:26

标签: python-3.x for-loop floating-point user-input

我正在尝试从用户输入中使用python 3.6.7中的for循环获取浮点数:

for _ in range(int(input())):
     foo = float(input())

Input:
      1
      12.3

没有错误,但是当它有多个值时,会显示错误:

for _ in range(int(input())):
     foo = float(input())

 Input:
      2
      2.5 3.1

ValueError: Could not convert string to float: '2.5 3.1' 
有什么想法吗?预先感谢。

1 个答案:

答案 0 :(得分:2)

输入内容并按Enter时,input将该数据视为单个字符串。因此,3.141<hit Enter>是单个字符串"3.141",可以使用float将其转换为浮点数。

但是,3.141 5926<hit Enter here>单个字符串 "3.141 5926"。这是单个(浮点)数字的表示形式吗?不是(有两个数字),因此float由于空格而无法将其转换为一个单个数字。

如果要将这些用空格分隔的数字视为单个数字,请split字符串,然后转换每个数字:

data = input().split() # gives ['3.141', '5926']
for x in data:
    print(float(x)) # converts each string to a number