Начинаю изучение сего языка, столкнулся со странным поведением самой первой проги из «Dive into Python3».
SUF =  {1000: ['KB', 'MB', 'GB'], 1024: ['KiB', 'MiB', 'GiB']}
def appr_size(size, is_1024=True):
    if size<0:
        raise ValueError('Number must be non-negative')
    multiple = 1024 if is_1024 else 1000
    for suffix in SUF[multiple]:
        size /= multiple
        if size < multiple:
            return '{0:.1f}{f}'.format(size, suffix)
    raise ValueError('tldr!')
if __name__ == '__main__':
    print(appr_size(100000000, False))
    print(appr_size(100000000))
[yura@TP61 python]$ python3 first.py
Traceback (most recent call last):
  File "first.py", line 12, in <module>
    print(appr_size(100000000, False))
  File "first.py", line 9, in appr_size
    return '{0:.1f}{f}'.format(size, suffix)
KeyError: 'f'
[yura@TP61 python]$ 







