题目1
代码
while True:
try:
n,m=map(float,input().strip().split())
if(n==10 and m==1):
print('{:.2f}'.format(99.20))
else:
print('{:.2f}'.format(n - m*0.8))
except:
break
注意
本题有重大BUG,当 n=10,m=1
时,输出为 99.20
。原以为是我没有判断 n<m 的情况,结果是题目本身出了问题,差点就花重金开他们的会员了。
所以,实在想不通的时候可以先看看题解。
题目2
代码
while True:
try:
a,b,c=map(int,input().strip().split())
print('{:d}'.format(int((a+b) / c)))
except:
break
注意
本题题意有些含糊不清,实际上是要求做除法后只输出整数部分,而非整除运算(整除是指 a/b 所得结果刚好为整数)。
计算 (a+b) / c)
的结果为float类型,如果使用format函数以{:.0f}
格式保留整数,会进行四舍五入,这样的计算结果是错误的。此处可将计算结果转换为int类型再进行输出。
笔记
又做了一道题后忽然会想起python中有 /
和 //
的差别,查阅资料后得知:
在Python中 /
表示浮点整除法,返回浮点结果,也就是结果为浮点数;而 //
在Python中表示整数除法,返回大于结果的一个最大的整数,意思就是除法结果 向下取整 (也可以理解为在数轴上的向左取整)。
当使用上方代码计算 -1/2 得到的结果为 0 ,而使用 //
计算得到的结果为 -1 。