我的问题

2024-10-03 21:33:14 发布

您现在位置:Python中文网/ 问答频道 /正文

请帮助我,我正在上一门在线课程,有人问我这个问题

分数部分函数将分子除以分母,只返回分数部分(0到1之间的数字)。完成函数体,使其返回正确的数字。 注意:由于除以0会产生错误,如果分母为0,则函数应返回0,而不是尝试进行除法

这是我的密码:

def fractional_part(numerator, denominator):
# Operate with numerator and denominator to 
# keep just the fractional part of the quotient
   if denominator == 0 or numerator == 0:
      print("0")
   else:
        fraction = numerator / denominator
        while fraction > 1:
           fraction1 = fraction - 1
   return fraction1

print(fractional_part(5, 5)) # Should be 0
print(fractional_part(5, 4)) # Should be 0.25
print(fractional_part(5, 3)) # Should be 0.66...
print(fractional_part(5, 2)) # Should be 0.5
print(fractional_part(5, 0)) # Should be 0
print(fractional_part(0, 5)) # Should be 0

这是我的输出:

UnboundLocalError:赋值前引用的局部变量“fraction1”


Tags: the函数数字be分数课程printfractional
3条回答
def fractional_part(numerator, denominator):
    # Operate with numerator and denominator to
    # keep just the fractional part of the quotient
    if denominator == 0:
        return 0 #raise Exception('Not possible')
    elif numerator == 0:
        return 0
    # check if result of division is already smaller than 1
    if numerator < denominator:
       return numerator / denominator

    remainder  = numerator % denominator
    return remainder / denominator

print(fractional_part(23, 5))
print(fractional_part(5, 4))

输出

0.6
0.25

如果将fraction1更改为fraction,将解决fraction1未定义的问题。然后,您需要在第一个if之后添加fraction = 0,以解决denominatornumerator是否为0

def fractional_part(numerator, denominator):
# Operate with numerator and denominator to 
# keep just the fractional part of the quotient
   if denominator == 0 or numerator == 0:
      fraction = 0 #to solve if denominator or numerator is 0
      print("0")
   else:
        fraction = numerator / denominator
        while fraction > 1:
           fraction = fraction - 1
   return fraction

您必须在代码中定义fraction1

您仅在while循环内创建fraction1变量,并且while循环仅在fraction > 1时运行

如果fraction <= 1怎么办?在代码的任何地方都没有创建任何名为fraction1的变量

最后,函数返回未定义的fraction1

此外,必须在循环内将fraction减少1,否则循环将无限期地继续下去

def fractional_part(numerator, denominator):
# Operate with numerator and denominator to 
# keep just the fractional part of the quotient
   if denominator == 0 or numerator == 0:
       return 0
   else:
       fraction = numerator / denominator
       fraction1 = 0
       while fraction > 1:
           fraction1 = fraction - 1
           fraction -= 1
       return fraction1
        

相关问题 更多 >