NameError: имя 'сортировка' не определено - PullRequest
0 голосов
/ 18 мая 2018

Я новичок в Python и списках обучения.Я не могу выяснить ошибку в следующей программе (выбор сортировки чисел):

final_input = []
while True:
          user_input = input("Enter number or quit: ")
          if user_input == "quit":
                    break
          final_input.append(user_input)
print(final_input)
sorting(final_input)

def sorting(final_input):
          count = 0
          while True:
                    final_output[count] = min(final_input)
                    final_input = final_input.remove(min(final_input))
                    count += 1
                    if count ==  len(final_input):
                              break
                    return(final_output)

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Отредактированный код:

def sorting(final_input):
          final_output=[]
          while 0 != len(final_input):
                    final_output+= [min(final_input)]
                    final_input.remove(min(final_input))
          return(final_output)
final_input = []
while True:
          user_input = input("Enter number or \"quit\": ")#
          if "quit"in user_input.lower():################## I only changed these lines because I feel the program is more neat like this.
                    break
          final_input.append(user_input)
print(final_input)
print(sorting(final_input))

Я переместил функцию наверх, чтобы она была определена до ее вызова.

В вашей функции вы пытались final_output[count]=value,создать список.Это не работает в Python.Есть несколько «массив, как структуры данных».Создайте пустой список примерно так: final_output=[].Затем вы можете добавить к нему, либо final_output+=[value], либо final_output.append(value).Вы также можете сделать final_output=[value1,value2,value3], если вы знаете, какими будут все значения при создании списка.

Я добавил речевые метки вокруг «quit», так как это предотвратит неверное толкование строки как «Введите число».или выйти из программы », или« »« Введите номер или «выйти:» «».Я также сделал так, чтобы он больше не учитывал регистр или пунктуацию.

Результат:

Enter number or "quit": 8
Enter number or "quit": 3
Enter number or "quit": 9
Enter number or "quit": 0
Enter number or "quit": Quit.
['8', '3', '9', '0']
['0', '3', '8', '9']

Это тот результат, который вы хотели?

0 голосов
/ 18 мая 2018

Как уже упоминалось в комментариях, Python интерпретируется, поэтому вам нужно определить вещи по мере их использования.Просто измените свой код на это, и оно должно работать:

def sorting(final_input):
     count = 0
     while True:
          final_output[count] = min(final_input)
          final_input = final_input.remove(min(final_input))
          count += 1
          if count ==  len(final_input):
              break
          return(final_output)

final_input = []
while True:
    user_input = input("Enter number or quit: ")
    if user_input == "quit":
        break
    final_input.append(user_input)

print(final_input)
sorting(final_input)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...