输入语句问题

时间:2018-05-19 05:29:27

标签: python sorting input

我是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))

以上程序提供以下错误输出。我不清楚需要使用“输入”声明更新什么。任何帮助将不胜感激。

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 :(得分:1)

正如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)

答案 1 :(得分:0)

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]

答案 2 :(得分:0)

使用此声明的输入

  

user_input = input(“输入数字或退出:”)

将以字符串数据类型的形式获取数据。所以您的输入采用字符串。所以排序不起作用

所以在附加

时将其设为int
  

final_input.append(INT(USER_INPUT))