множественный вход с плавающей запятой () для значения цикла - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь получить число с плавающей запятой из пользовательского ввода с циклом for в python 3.6.7:

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 Ответ

2 голосов
/ 10 марта 2019

Когда вы вводите что-то и нажимаете 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
...