我有一段代码可以计算分数的简化版本:
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;我的函数用户输入分数在两个单独的值,分子和分母。
答案 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())