元素越界打印为“无”

Posted

技术标签:

【中文标题】元素越界打印为“无”【英文标题】:Element out of bounds printout as "None" 【发布时间】:2021-12-20 17:13:00 【问题描述】:

下面的代码旨在在其范围内打印出一个列表。该列表当前在最后一个元素之后显示“None”(是的,我知道 python 中的“None”在 C++ 中是“Null”),但是当“if " 如果发现元素为“无”,则循环会中断它

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]))

【问题讨论】:

【参考方案1】:

None 不是从您的函数中打印出来的。它是您的函数(隐式)返回并从调用代码(显式)打印出来的值。

说明:由于函数没有显式返回值,所以它的返回值是None。因为在你的代码中你不只是调用函数,而是打印它的值(print(out_of_boud(...)),None是在函数体执行后打印的。


就像评论一样,由于您的风格似乎受到其他语言的影响,因此有更简洁和 Pythonic 的方式来实现您正在做的事情。此代码等效于您的函数(None 检查除外):

for i, item in enumerate(lst):
    print(item, i, sep='\t')

【讨论】:

是的,C++ 在这些问题上更详细,但是是的,我认为情况就是这样。谢谢

以上是关于元素越界打印为“无”的主要内容,如果未能解决你的问题,请参考以下文章

Golang 切片数组打印元素两数只和等于8的下标无重复字符的最长子串

访问动态分配数组的越界元素/没有 SegFault

顺时针和逆时针螺旋打印二维数组(行列式)

常见查找和排序算法

习题3-5 Puzzle UVA - 227

Go四神兽之数组