有人可以解释为什么c等于25而不是30吗?通过乘以a *(b // a),然后再加上b,我一直保持30。
a=10
b=3*(a-5)
c=b+(b//a)*a
答案 0 :(得分:0)
只需一步一步地做,您就会发现自己正在做
c = 15 + 1*10
因此,c为25。b // a为下限,表示15/10变为1
答案 1 :(得分:0)
了解发生了什么的一种简单方法是打印每个步骤:
a=10
b=3*(a-5)
print(b)
print(b//a)
print((b//a)*a)
print(b+(b//a)*a)
c=b+(b//a)*a
输出
15
1
10
25
答案 2 :(得分:0)
(15//10)
等于1
,因此c的公式等于15+1*10
//
运算符是累加除法,向下舍入到最接近的整数。此外,您使用的所有值都是整数。要获得30,您需要使用常规除法运算符/
,并将除法运算中的一个操作数设置为浮点数,如下所示:c = b+(float(b)/a)*a
该代码将c设置为30.0
。
答案 3 :(得分:0)
c = b + (b//a)*a = b + ((b//a)*a) = 15 + ((15//10)*10) = 15 + (1*10) = 25
这可以清除吗?
关键部分是15//10
,因为//
执行整数除法,舍入到下一个整数。请注意Python 3中/
和//
之间的区别。
>>> 15/10
1.5
>>> 15//10
1