1

我是新编程,我对这个任务有点难过。我们应该接受用户输入的两个分数并获得产品或商。我们重新定义了函数,我已经完成了这些,但我对如何将它们引用到用户输入和反之亦然感到困惑。任何指针或线索将不胜感激,我认为我只需要某种顿悟。这是我尴尬的代码:

import fractions

def gcd(m,n):

    while m%n != 0: #finds the GCD (global definition)
        oldm = m
        oldn = n

        m = oldn
        n = oldm%oldn
    return n

class Fraction:

    def __init__(self,top,bottom): #constructor; creating fraction

        self.num = top      #methods to go about placing numerator and denominator
        self.den = bottom

    def __str__(self): #calling the fraction from methods above
        return str(self.num)+"/"+str(self.den) #Returns the value of fraction


    def __add__(self,otherfraction): #For addition of fractions (self = first fraction, otherfraction = second fraction)

        newnum = self.num*otherfraction.den + self.den*otherfraction.num
        newden = self.den * otherfraction.den
        common = gcd(newnum,newden)

        return Fraction(newnum//common,newden//common) #Returns the new fraction with reduced answer.


    def __mul__(self,otherfraction): #For multiplication of fractions

        newnum = self.num*otherfraction.num
        newden = self.den*otherfraction.den
        common = gcd(newnum,newden)

        return Fraction(newnum//common,newden//common)


    def __floordiv__(self,otherfraction): #For division of fractions; use // not /

        newnum = self.num*otherfraction.den #Use multiplication of the reciprocal
        newden = self.den*otherfraction.num
        common = gcd(newnum,newden)

        return Fraction(newnum//common,newden//common)


    def __sub__(self,otherfraction): #For subtraction of fractions

        newnum = self.num*otherfraction.den - self.den*otherfraction.num
        newden = self.den * otherfraction.den
        common = gcd(newnum,newden)

        return Fraction(newnum//common,newden//common)
4

2 回答 2

0

在您的程序中的某个地方,您需要从用户那里获得一些输入,然后您可能需要修改该输入,以便您可以使用该输入实例化您的 Fraction 对象。在 Python2.x 中,从用户那里获取输入通常如下所示:

some_user_entered_string = raw_input()

你应该在 Python 解释器中试试这个。尝试一堆变化,看看会发生什么。无论如何,在 Python3.x 中它通常看起来像这样:

some_user_entered_string = input()

您还可以打印一些内容,以便用户知道要输入什么,如下例所示:

some_user_entered_string = input("Please enter a fraction: ")

再说一遍:你应该在你的 Python 解释器中试试这个。

注意两件事:1)输入的值被分配给我的变量some_user_entered_string,2)它将是一个字符串,所以如果你想用它做类似数字的东西,你需要转换它。

于 2013-09-16T21:09:17.230 回答
0

我不确定这是否有帮助(如果没有,请告诉我,我会删除答案)也不是您问题的直接答案,但它可能会有所帮助(可能)

示例中有两个部分。一、捕获用户输入的字符串,然后使用正则表达式“解析”用户输入:

>>> import re
>>> re_fraction=re.compile(r"(?P<top>\d+)/(?P<bottom>\d+)$")
>>> fraction_str = raw_input()
3/4
>>> groups = re_fraction.match(fraction_str).groupdict()
>>> groups
{'top': '3', 'bottom': '4'}
>>> f = Fraction(groups['top'], groups['bottom'])

要了解这是做什么的,请检查:

  1. 如何在终端中捕获用户输入:raw_input

  2. 一般的 re 模块:re (1)

  3. 与正则表达式匹配:re 模块 (2)

  4. 一个在线正则表达式测试器

于 2013-09-16T21:14:39.620 回答