python取余问题

python取余问题,第1张

def leastcoin(coinnum):
    ls = [25, 10, 5, 1]
    ls2 = []
    for a in ls:
        ls2append(coinnum/a)  //通过这行ls2append()加入coinnum/a的商
        coinnum = coinnum%a  //取余
    return ls2
    
print(leastcoin(1111))
[44, 1, 0, 1]

"""

#python2

for a in ls:

ls2append(coinnum/a)

coinnum = coinnum%a

ls = [25 ,10, 5, 1]

第一次循环, coinnum = 1111, a = 25, coinnum/a = 1111/25 = 44, coinnum%a = 1111%25 = 11

ls2append(coinnum/a)  ----> ls2append(44) ----> ls2 = [44]

coinnum = coinnum%a  ----> coinnum = 11 # 被重新赋值

第二次循环, coinnum = 11 (因为上一轮被重新赋值,所以是11不是1111), a = 10

coinnum/a = 11/10 = 1, coinnum%a = 1%10 = 1

ls2append(coinnum/a) ----> ls2append(1) ----> ls2 = [44, 1]

coinnum = coinnum%a ----> coinnum = 1

第三次循环, coinnum = 1, a = 5, coinnum/a = 1/5 = 0, coinnum%a = 1%5=1

ls2append(coinnum/a) ----> ls2append(0) ----> ls2 = [44, 1, 0]

coinnum = coinnum%a ----> coinnum = 1

第四次循环, coinnum = 1, a = 1, coinnum/a = 1/1 = 1, coinnum%a = 1%1=0

ls2append(coinnum/a) ----> ls2append(1) ----> ls2 = [44, 1, 0, 1]

coinnum = coinnum%a ----> coinnum = 0

所以最后ls2 = [44, 1, 0, 1]

例如:1111的金额 需要44张25面额 + 1张10面额 + 0张5面额 + 1张1面额 组成

被加进ls2列表的值是上一轮余数 coinnum%a , 除以ls元素的商

"""

余数 和 商数 不同
余数 = %
商数 = /
在某种情况下我们会用余数
>>> 3/1
3
三除一等于三
>>> 3/2
1
三除二,有余数但是不输出
>>> 3/3
1
---------------------------------------------------------------
三除三等于一
>>> 3 % 1
0
三除一,没有余数
>>> 3 % 2
1
三除二,有余数
>>> 3 % 3
0
三除三,没有余数
在某种情况下我们会使用到 %
even = [x 2 for x in range(10) if not x % 2]
#这一小段代码的意思是说,在0-9之间如果没有余数,没有余数也就是双数,就会2
结果
>>> for i in even:
print i
0
4
16
36
64


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/10384064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存