Идея состоит в том, чтобы создать функцию с именем calculator, которая принимает входные данные и сравнивает их с переменной. Сравните размер файла с размером блока, и, если есть остаток, удвойте размер блока, чтобы приспособить использование. Моя проблема в том, что при вводе 1 я все еще получаю 8192? Все же другие вычисления оказываются правильными. Я знаю, что разделение по этажам дает только целое число, а не число с плавающей точкой (что, как мне показалось, может быть лучшим способом сделать это, потому что я хотел получить действительное число), но когда я пытаюсь сгенерировать его, я получаю те же результаты. Я также пробовал использовать плавающие в другом месте, либо с неправильными, либо с теми же результатами, что и выше. Когда я поменял порядок по модулю, ответ кажется правильным, но меня проинформировали, что это неправильно, и мне сказали делать это больше как то, что вы видите здесь, с делением по этажам и по модулю в этом порядке.
Итак, мой вопрос почему я получаю 8192 со входом 1, а остальные правы?
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