Как заставить python читать входные данные как число с плавающей запятой? - PullRequest
1 голос
/ 24 февраля 2020

Мне нужно взять входные данные в следующей форме "score / max" (пример 93/100) и сохранить их как переменную типа float. Проблема, с которой я сталкиваюсь, состоит в том, что python выполняет деление, обозначенное backsla sh, и, поскольку два числа являются целыми числами, результат равен 0. Даже если я преобразовываю свои входные данные в число с плавающей точкой, результат равен 0.0. Вот мой код для справки:

#!/usr/bin/env python

exam1=float(input("Input the first test score in the form score/max:"))

Если введено значение 93/100, переменная exam1 будет равна 0,0 вместо предполагаемых 0,93.

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Вы можете использовать python модуль fractions, который умеет читать строку дроби

from fractions import Fraction
exam1 = float(Fraction(input("Input the first test score in the form score/max:")))

для Python 2.7, использовать raw_input вместо input

см. Python 2.7 получение пользовательского ввода и манипулирование строкой без кавычек

Input the first test score in the form score/max:93/100
>>> exam1
0.93
1 голос
/ 24 февраля 2020

Примечание:

input()

читает строку из ввода, преобразует ее в строку (зачеркивая завершающую строку) и возвращает это .

Вы можете попробовать следующий код:

string = input("Input the first test score in the form score/max: ")
scores = string.strip().split("/")
exam1 = float(scores[0]) / float(scores[1])

print(exam1)

Ввод:

Input the first test score in the form score/max: 93/100

Выход:

0.93
...