我想在python中的一个函数中输入一个分数

时间:2015-04-14 05:18:57

标签: python

我有一段代码可以计算分数的简化版本:

def simp_frac(num,den):
    smallest = min(num, den)
    for i in range(smallest, 1 , -1):
        if num%i == 0 and den%i == 0:
            print (str(num/i) + "/" + str(den/i))
            break

其中print(simp_frac(12,4))为我提供了我期望的输出3/1

我想要做的是修改函数,以便用户可以输入以a/b形式编写的分数,但我无法弄清楚要使用的变量类型以及如何" feed&# 34;我的函数用户输入分数在两个单独的值,分子和分母。

6 个答案:

答案 0 :(得分:1)

您可以按如下方式询问用户输入数据:

user_input = input("Provide fraction as num/dem (e.g. 1/3): ")
# in python 2.7: user_input = raw_input("Provide fraction as num/dem (e.g. 1/3): ")

num,den = map(float, user_input.split('/'))

simp_frac(num,den)

答案 1 :(得分:1)

您可以使用input()内置提示用户输入值。 在Python 2.x上,使用raw_input()

不要打印结果,只需将其返回即可。

def simp_frac(num,den):
    smallest = min(num, den)
    for i in range(smallest, 1 , -1):
        if num%i == 0 and den%i == 0:
            return '{}/{}'.format(num/i,den/i)
            # break - not needed

user_input = input('Please enter a fraction: ')
num, den = user_input.split('/')
print('Your result is: {}'.format(simp_frac(int(num), int(den))))

我们需要将输入转换为整数,因为所有输入都将作为字符串提交。

答案 2 :(得分:1)

num, den = raw_input().split('/')
simp_frac(float(num), float(den))

答案 3 :(得分:0)

简单播放字符串split方法和splat operator

def simp_frac_string(s):
    return simp_frac(*(int(i) for i in s.split('/')))

答案 4 :(得分:0)

我认为这类代码有助于计算。

from fractions import Fraction 
x = raw_input('Enter a Fraction: ')
y = Fraction(x)
print(y)
z = y+1.5
print('output:', z)

raw_input接受任何输入,因为String和Fraction将其转换为Float

样本输入:

Enter a Fraction: 3/5
output: 2.1

答案 5 :(得分:0)

您可以使用“python 中的分数模块”作为, from fractions import Fraction frac = Fraction(raw_input())