Python NameError由于未定义的函数

时间:2018-05-12 13:38:41

标签: python python-3.x

我最近一直在尝试编码数字分拣机。我搜索了互联网并决定尝试这段代码:

numbers=([])
amount=input("How many numbers are in your list? ")
print("")
counter = 0
ran = 0
while counter < int(amount):
    counter = counter + 1
    ran = ran + 1
    num3 = input(str(ran) + ". Input: ")
    try:
        val = int(num3)
    except ValueError:
        num3 = input(str(ran) + ". Input: ")
    sort(numbers)
    numbers.append(num3)

在开始时(当我尝试运行它时),它似乎起作用;这是前几行输出:

How many numbers are in your list? (I input 7)

1. Input: (I input 3)

但是,输入3并按回车键后,会出现此错误:

Traceback (most recent call last):
  File "D:/ZGMDCL8364/Documents/AllPyCharmProjects001/NumberSorter.py",   line 39, in <module>
    sort(numbers)
NameError: name 'sort' is not defined

然后我明白了:

Process finished with exit code 1

我该如何解决这个问题?请帮忙。

2 个答案:

答案 0 :(得分:1)

Python具有sorted()内置函数和sort()列表方法,用作list.sort()

没有sort()内置函数,您还没有定义一个...

定义一个函数,比如sort()

def sort(any_arguments):
    # your code here
    return any_output_here

由于@Matt Ball评论了有关Python排序的文档,我建议您先阅读Python教程。

这里只是一个例子: https://www.tutorialspoint.com/python/python_functions.htm

那里有大量的书籍,视频和资源。 MOOC在线学习,如Coursera,EdX,MIT,Standford,Udemy等,通常很有帮助。 Stepik等互动平台也是有趣的选择。

通常,错误消息可以通过搜索它们来查看是否存在现有解决方案来帮助我们进行调试。如果不是,通过描述情况和错误来定义问题会更清楚,而不仅仅是声明存在错误&#34;。这些将帮助您通过与新语言接触来解决任务或设计项目,从而帮助您攀登学习曲线。

快乐编码〜

答案 1 :(得分:0)

关于阅读输入的后续问题,这是python 3的一个简单方法:

num_count = input('Please enter the amount of numbers you wish to sort.\n')
numbers_input = input('Please enter a list of {} numbers.\n'.format(num_count))
numbers_list = [int(n) for n in numbers_input.split()]
print(sorted(numbers_list))

逐行,首先要求用户输入数字。接下来,您要询问用户自己的号码。输入应在由空格分隔的同一行上输入多个数字。接下来,您获取此原始输入(字符串),并通过将字符串拆分为空格将其转换为列表,并将结果列表中的每个元素从字符串转换为整数。最后,排序并打印此列表。

注意:无论您如何实施号码分拣机,您都不需要用户输入要分拣的号码数量。您可以使用len(numbers_list)获取此信息。