这里的想法是创建一个名为计算器的函数,该函数接受输入并将其与变量进行比较。将文件大小与块大小进行比较,如果有剩余,则将块大小加倍以适应使用情况。我的问题是,输入 1,我仍然得到 8192?然而,其他计算结果是正确的。我知道地板除法只产生一个整数,而不是一个浮点数(我认为这可能是一个更好的方法,因为我想要实数)但是当我尝试浮动它时,我得到了相同的回报。我也尝试过在其他地方浮动,结果与上述不正确或相同。当我颠倒模数的顺序时,答案似乎是正确的,但我被告知这是错误的,并被告知要更像您在此处看到的那样,按此顺序使用地板除法和模数。
所以我的问题是,为什么我得到输入为 1 的 8192,但其余的都是对的?
def calculator(somedata): # calculator function, 'somedata' is the input
blocksize = 4096 # what block size on the partition
# calculate how many blocks are fully occupied
fullblock = somedata // blocksize # floor division will give back only the integer yes?
# modulo to check whether there's any remainder
bytesremain = somedata % blocksize # which will say 1 or None unless I float yes?
# return the block usage based on byte count?
if bytesremain > 0: # if there's anything left over in the bytesremain
return(blocksize * 2) # double the block usage to 2
return blocksize # otherwise return the block usage
print(calculator(1)) # Should be 4096
print(calculator(4096)) # Should be 4096
print(calculator(4097)) # Should be 8192
print(calculator(6000)) # Should be 8192