元素越界打印输出为 "None"
Element out of bounds printout as "None"
下面的代码旨在打印出其范围内的列表。该列表当前在最后一个元素之后显示“None”(是的,我知道 python 中的“None”在 C++ 中是“Null”),但我不明白为什么当“if”循环发现元素是“None”
时,循环会超出列表的边界。
def out_of_boud(lst):
lst_length = int(len(lst))
element = int(0)
while (element >= 0 and element < lst_length):
if element == None: break
else:
print(str(lst[element]) + "\t" + str(element))
element +=1
print(out_of_boud([10, 15, 20, 21, 22, 35]))
print(out_of_boud([10, 15, 20, 21]))
值 None
不是从您的函数打印出来的。它是您的函数(隐式)并从调用代码(显式)打印的值 returned。
解释:由于函数没有明确return一个值,它的return值为None
。因为在你的代码中你不只是调用函数,而是打印它的值(print(out_of_boud(...)
),None
是在函数体执行后打印的。
正如评论一样,由于您的风格似乎是由其他语言塑造的,因此有更简洁和 Pythonic 的方式来实现您正在做的事情。此代码等效于您的函数(None
检查除外):
for i, item in enumerate(lst):
print(item, i, sep='\t')
下面的代码旨在打印出其范围内的列表。该列表当前在最后一个元素之后显示“None”(是的,我知道 python 中的“None”在 C++ 中是“Null”),但我不明白为什么当“if”循环发现元素是“None”
时,循环会超出列表的边界。def out_of_boud(lst):
lst_length = int(len(lst))
element = int(0)
while (element >= 0 and element < lst_length):
if element == None: break
else:
print(str(lst[element]) + "\t" + str(element))
element +=1
print(out_of_boud([10, 15, 20, 21, 22, 35]))
print(out_of_boud([10, 15, 20, 21]))
值 None
不是从您的函数打印出来的。它是您的函数(隐式)并从调用代码(显式)打印的值 returned。
解释:由于函数没有明确return一个值,它的return值为None
。因为在你的代码中你不只是调用函数,而是打印它的值(print(out_of_boud(...)
),None
是在函数体执行后打印的。
正如评论一样,由于您的风格似乎是由其他语言塑造的,因此有更简洁和 Pythonic 的方式来实现您正在做的事情。此代码等效于您的函数(None
检查除外):
for i, item in enumerate(lst):
print(item, i, sep='\t')