0

我是python的新手,idk如何做以下问题,请帮助.....

许多编程语言都实现了一个名为 divmod() (除法和模数的缩写)的函数,当使用下除法将两个正数相除时,它会返回商和余数。

4个数之间的关系可以用下面的公式来描述:

=×+

编写一个程序,从用户那里获取除法的除数和除数输入,并使用 for 循环查找相应的商和余数,而不使用 /、*、//、% 和 divmod()。换句话说,您只能在代码中使用运算符进行加减运算。

假设您输入 45 作为除数,输入 7 作为除数,打印结果如下:

Input a positive integer for the dividend: 45

Input a positive integer for the divisor: 7

45 divided by 7 yields:

quotient: 6

remainder: 3

如果输入另一组值,代码应该可以正常工作。

4

3 回答 3

0

这是使用while循环的答案。

>>> dividend = 45
>>> divisor = 7

你有dividend奶牛和divisor牛仔(不要被这个幼稚的例子冒犯:这是对我大儿子的眨眼……)。一开始,所有的奶牛都在畜栏里。

>>> remainder = dividend

而且你没有把任何牛给任何牛仔。

>>> quotient = 0

现在,做一个欧几里得除法:虽然你可以给每个牛仔一头牛......

>>> while remainder >= divisor:
...     remainder -= divisor # remove those `divisor` cows from the corral...
...     quotient += 1        # ...and note that you have given one more cow to each cow-boy

结果是:

>>> quotient, remainder
(6, 3)

希望清楚!


编辑关于for循环

如果您绝对需要使用 a ,则可以使用afor来模拟a 。whilebreak

我们假设dividendand divisor>= 1。因此,quotient <= divisor

>>> remainder = dividend
>>> quotient = 0

>>> for _ in range(dividend):
...     if remainder < divisor:
...         break
...     quotient += 1
...     remainder -= divisor

>>> quotient, remainder
(6, 3)

如果break不允许,那么您可以使用 hack(我不建议这样做break只是隐藏在迭代器中):

>>> remainder = dividend
>>> quotient = 0

>>> for _ in iter(lambda: remainder >= divisor, False):
...     quotient += 1
...     remainder -= divisor

>>> quotient, remainder
(6, 3)

您还可以使用递归函数:

>>> def divm(divid, divis):
...     if divid < divis:
...         return 0, divid
...     else:
...         quotient_minus_one, remainder = divm(divid - divis, divis)
...         return quotient_minus_one + 1, remainder

>>> divm(dividend, divisor)
(6, 3)
于 2020-10-12T07:47:35.533 回答
0

尝试做一个循环并减去,直到你达到某个数字,还有一个计数器变量。您迭代的次数也就是您的计数器变量将是您的商。

我会为你做mod:

def mod(a, b):
  while b <= a:
    c = a - b
    a -= b
  return c

>>> mod(45, 7)
3

但是我给了你 quotient/floordiv 的逻辑,你自己试试吧!

于 2020-10-11T13:04:05.197 回答
0

div = int(input('为被除数输入一个正整数:')) #dividend

dir = int(input('为除数输入一个正整数:')) #divisor

def mod(div,目录):

quotient = 0 #counter variable

for dir in range(div + 1):#dir <= div

    quotient = div - dir

    div -= dir

return quotient

剩余 = 商

print(div ," 除以" ,dir ,"yields:" , "\nquotient: " , quotient , "\nremainder: " ,remain)

这是我的答案,但无法找到商和余数:(

于 2020-10-11T15:18:22.653 回答