Десятичная дробь / Фракция ввода - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь получить пользовательский ввод в виде дроби, но использую его как десятичную, в python

Например:

chance = input("Enter chance")

Давайте предположим, что пользователь вводит "3 /4 "

Как я могу преобразовать" 3/4 "в" 0,75 "для дальнейших вычислений, таких как:

total = chance + 36/67  # Where total is a float value

PS Я новичок в Python, так что если это кажется плохимвопрос, который я прошу прощения, но я не мог найти ответ нигде.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Предположим, вы справились с тем, чтобы заставить пользователя вводить текст.Затем преобразуйте этот текст в fractions.Fraction

>>> import fractions
>>> fractions.Fraction("3/4")
Fraction(3, 4)

У вас есть различные варианты оттуда.Вы можете продолжать использовать его как Fraction, но если вы настаиваете на использовании значений типа float, тогда просто конвертируйте в число с плавающей точкой

>>> float(fractions.Fraction("3/4"))
0.75
0 голосов
/ 23 мая 2018

Проверьте формат ввода и при необходимости преобразуйте его в числитель / знаменатель перед выполнением необходимой математической операции, чтобы преобразовать ее из дробного в десятичное значение.

chance = "3/4"

# verify that format is valid, then proceed to conversion
tokens = chance.split("/")
numer = int(tokens[0])
denom = int(tokens[1])
value = numer / denom
print(value)

Если вы используете более старую версию python (например, 2.x), вам нужно будет преобразовать одну из частей в число с плавающей точкой, потому что python отбрасывает плавающую точку во время деления int / int.

...