Проблема с оператором ввода - PullRequest
0 голосов
/ 19 мая 2018

Я новичок в Python и списках обучения.Вот программа, которую я написал для сортировки чисел:

def sorting(final_input):
          final_output= []
          count = 0
          length = len(final_input)
          while count < length:
                    final_output.append(min(final_input))
                    final_input.remove(min(final_input))
                    count += 1
                    if count ==  (length): 
                              break
          return(final_output)
final_input = [5,6,57,531,9,1]
print(final_input)
print(sorting(final_input))

Вышеприведенная программа работает нормально и выдает следующий вывод:

[5, 6, 57, 531, 9, 1]
[1, 5, 6, 9, 57, 531]

Но когда я даю ввод с помощью команды ввода (какследует):

def sorting(final_input):
          final_output= []
          count = 0
          length = len(final_input)
          while count < length:
                    final_output.append(min(final_input))
                    final_input.remove(min(final_input))
                    count += 1
                    if count ==  (length): 
                              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)
print(sorting(final_input))

Приведенная выше программа выдает следующий неверный вывод.Мне не понятно, что нужно обновить с помощью выражения «input».Любая помощь будет оценена.

Enter number or quit: 5
Enter number or quit: 6
Enter number or quit: 57
Enter number or quit: 531
Enter number or quit: 9
Enter number or quit: 1
Enter number or quit: quit
['5', '6', '57', '531', '9', '1']
['1', '5', '531', '57', '6', '9']

Ответы [ 3 ]

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

Как ответил kvmahesh, тип возврата input() всегда равен str.Вам нужно преобразовать его в int, если вы хотите числа.

while True:
    user_input = input("Enter number or quit: ")
    if user_input == "quit":
        break

    try:
        final_input.append(int(user_input))
    except ValueError:
        print("Invalid input!")

Блок try...except хорошо бы проверить, если пользователь дает какой-то неверный ввод (например, asdfg).

Также, если вы просто хотите отсортировать список, вы можете использовать sorted():

final_input = sorted(final_input)
0 голосов
/ 19 мая 2018

Ввод с этим оператором

user_input = input ("Введите число или выйти:")

Будет принимать данные в виде строкового типа данных .soна ваш ввод берется строка.Так что сортировка НЕ ​​работает

Так что сделайте это int во время добавления

final_input.append (int (user_input))

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

Значения stdin всегда имеют тип string.поэтому конвертируйте, используя int при добавлении в строку final_input.append(int(user_input)):

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

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

Вывод:

Enter number or quit: 3
Enter number or quit: 5
Enter number or quit: 1
Enter number or quit: 2
Enter number or quit: 100
Enter number or quit: quit
[3, 5, 1, 2, 100]
[1, 2, 3, 5, 100]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...