为什么我得到的输出为 None?

我一直在尝试检查数字列表中的数字是否在 -1,000,000 到 1,000,000 之间。


这就是我解决问题的方法,我首先初始化 'check' = True和一个名为 A 的整数数组。然后循环遍历该数组以检查每个数字是否在范围内。如果是,则“check”设置为True,如果不是,则设置为False 。然后我在循环结束时返回检查值。我继续调用该函数,并尝试使用该函数的检查值来确定是对循环进行排序还是打印“超出范围!” 我不太确定我错过了什么。


check = True

A = [10, 3, 600000000, 3, 2]


def solution(A):

    

    for num in A:

        if(-1000000 <= num <= 1000000):            

            check = True

                

        else:                

            check = False

            break

    return check


solution(A)


if(check == True):

    print(A.sort())

else:

    print("Out of range!")


森林海
浏览 54回答 3
3回答

眼眸繁星

A.sort()对 的内容进行排序A,但返回值为None。>>> A = [5, 3, 6, 4]>>> return_value = A.sort()>>> print(A)[3, 4, 5, 6]>>> print(return_value)None如果您需要打印排序列表A,那么您应该使用print(sorted(A))代替print(A.sort())

一只萌萌小番薯

在块中定义的变量仅在该块中可用。无法在块外访问它。def solution(A):        for num in A:        if(-1000000 <= num <= 1000000):                        check = True                        else:                            check = False            break    return check因此,您无法在解决方案功能之外访问此处的检查值。因为你的函数已经返回检查。简单地check = solution(A)在函数之外保存您的支票。print(A.sort())A.sort() 进行就地排序,它返回 None,使用 print(sorted(A)) 或执行 A.sort() 然后执行 print(A)

慕妹3242003

正如评论中指出的那样,您的排序语法不正确并且没有返回任何内容。此外,您还使用了全局变量,这违背了使用函数(模块化)的目的。下面的代码更加高效和可读。#Check if number 'A' is within rangeA = [10, 3, 600000000, 3, 2]def solution(A):&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; for num in A:&nbsp; &nbsp; &nbsp; &nbsp; if(num > 1000000 or num < -1000000):&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return False&nbsp; &nbsp; return Trueif(solution(A) == True):&nbsp; &nbsp; print(sorted(A)) # Fixed sort syntaxelse:&nbsp; &nbsp; print("Out of range!")输出:替代输入 [10,3,3,-3]:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python