[Tutor] ASSIST A BEGINNER PLEASSE

alexkleider alexkleider at protonmail.com
Wed Nov 11 21:45:20 EST 2020


‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, November 11, 2020 2:46 PM, Leonard Ujomu via Tutor <tutor at python.org> wrote:

> If a filesystem has a block size of 4096 bytes, this means that a file comprised of only one byte will still use 4096 bytes of storage. A file made up of 4097 bytes will use 4096*2=8192 bytes of storage. Knowing this, can you fill in the gaps in the calculate_storage function below, which calculates the total number of bytes needed to store a file of a given size
> def calculate_storage(filesize):    block_size = 4096    # Use floor division to calculate how many blocks are fully occupied    full_blocks = 8192    # Use the modulo operator to check whether there's any remainder    partial_block_remainder = 4097 % 2    # Depending on whether there's a remainder or not, return    # the total number of bytes required to allocate enough blocks    # to store your data.    if partial_block_remainder > 0:        return block_size    return full_blocks
> print(calculate_storage(1))    # Should be 4096print(calculate_storage(4096)) # Should be 4096print(calculate_storage(4097)) # Should be 8192print(calculate_storage(6000)) # Should be 8192
>
> After running, i get the following result
> 4096409640964096
>
> Where is my error please??? Thank you
>
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor

What follows is a direct copy of a file I used to try first
to figure out the logic of your code and then, after failing
that, suggest a simpler solution.
Hope it helps.
Remember: use plain text!!!


#!/usr/bin/env python3

# File: 2try.py

'''
If a filesystem has a block size of 4096 bytes, this means that a file comprised of only one byte will still use 4096 bytes of storage. A file made up of 4097 bytes will use 4096*2=8192 bytes of storage. Knowing this, can you fill in the gaps in the calculate_storage function below, which calculates the total number of bytes needed to store a file of a given size

def calculate_storage(filesize):
    """
    I've tried to adjust the indentation but can't follow the logic of
    your code.
    """
    block_size = 4096    # Use floor division to calculate how many blocks are fully occupied
    full_blocks = 8192    # Use the modulo operator to check whether there's any remainder
    partial_block_remainder = 4097 % 2    # Depending on whether there's a remainder or not, return
    # the total number of bytes required to allocate enough blocks    # to store your data.
    if partial_block_remainder > 0:
        return block_size
    return full_blocks
print(calculate_storage(1))    # Should be 4096
print(calculate_storage(4096)) # Should be 4096
print(calculate_storage(4097))
'''

def calculate_storage(filesize, block_size=4096):
    """
    The following code is much simpler and seems to provide what you
    want. Notice <block_size> has been made a named parameter which
    will give you flexibility in case you ever need to apply this
    function to a file system that has a differing block size.
    As an editorial aside, it would seem to me that a calculate_blocks_required
    would be a more useful function. (Simply delete the " * block_size" at the end.
    """
    blocks_required, extra = divmod(filesize, block_size)
    if extra:
        blocks_required += 1
    return blocks_required * block_size

print(calculate_storage(1))  # Should be 4096
print(calculate_storage(4096))  # Should be 4096
print(calculate_storage(4097))  # Should be 8192
print(calculate_storage(6000))  # Should be 8192

What_you_got = """
After running, i get the following result
4096
4096
4096
4096

Where is my error please??? Thank you
"""

what_I_got = """
alex at X1v2:~$ python3 2try.py
4096
4096
8192
                                                                                                                  1,1           Top



More information about the Tutor mailing list