你有一些缩进问题。在python中,缩进非常重要,因为解释器使用缩进级别来决定如何对语句进行分组。例如:if (False):
print("Hello")
print("World")
不应运行与if(False)语句分组的语句,因为if(False)不应为true。但我给你的例子仍然会输出“World”。这是因为解释器不认为第二个print语句是if语句的一部分。现在,如果我要取完全相同的代码并缩进第二个print语句,如下所示:if (False):
print("Hello")
print("World")
解释器将看到两个打印语句都比if语句深一个缩进级别,并且不会输出任何内容,因为if(False)总是False。
同样的缩进也适用于函数定义。例如:def foo():
if(True):
print("Hello, World")
因为if语句的缩进比foo的定义更深一层,所以它与foo函数组合在一起。因此,当您调用foo函数时,它将输出“Hello,World”。
现在是变量。在代码中,变量缩进一个级别。如果它是函数定义、if语句、for循环等的一部分,那就没问题了,但如果它不是函数定义的一部分,就会产生问题。以以下为例:a="Hello, World"
if(True):
print(a)
将给出语法或缩进错误,同时:a="Hello, World"
if(True):
print(a)
将打印“你好,世界”。
现在关注您的代码:SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
需要取消缩进一个级别才能成为:SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
另外:def approximate_size(size, a_kilobyte_is_1024_bytes=True):
需要取消缩进一个级别才能成为:def approximate_size(size, a_kilobyte_is_1024_bytes=True):
以及:if __name__ == '__main__':
print(approximate_size(1000000000000, False))
print(approximate_size(1000000000000))
需要:if __name__ == '__main__':
print(approximate_size(1000000000000, False))
print(approximate_size(1000000000000))
把所有这些放在一起,你会得到:SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
def approximate_size(size, a_kilobyte_is_1024_bytes=True):
'''Convert a file size to human-readable form.
Keyword arguments:
size -- file size in bytes
a_kilobyte_is_1024_bytes -- if True (default), use multiples of 1024
if False, use multiples of 1000
Returns: string
'''
if size < 0:
raise ValueError('number must be non-negative')
multiple = 1024 if a_kilobyte_is_1024_bytes else 1000
for suffix in SUFFIXES[multiple]:
size /= multiple
if size < multiple:
return '{0:.1f} {1}'.format(size, suffix)
raise ValueError('number too large')
if __name__ == '__main__':
print(approximate_size(1000000000000, False))
print(approximate_size(1000000000000))
我希望这有帮助!