如何从用户输入中排序列表?

时间:2015-02-04 23:38:30

标签: list sorting python-3.x input

我一直试图让这项工作工作一段时间,而我似乎无法按照升序排序。我的程序要求用户输入三个整数然后输出结果,并且应该对从最小到最大输入的数字进行排序。但是,每当我尝试对它进行排序时,它都不会按照我想要的方式对其进行排序。我已经尝试了几种修改排序方法的方法,但它仍然不起作用。例如,如果我输入2,10和5作为我的三个数字,它将显示为"列表:[2, 10, 5]"。

import math

print ("")
print ("Welcome to my program!")
print ("")

v1 = input("Enter the first number: ")

print ("")

v2 = input("Enter the second number: ")

print ("")

v3 = input("Enter the third number: ")

print ("")

#tried to sort list here
list1 = [int(v1), int(v2), int(v3)]
sorted(list1, key=int)

sum = int(v1) + int(v2) + int(v3)
product = int(v1) * int(v2) * int(v3)
integer = int(v1)//int(v2)
mod = float(v1) % float(v2)
average = (float(v1) + float(v2) + float(v3))/ 3
star= "*"



print ("------------------")
print ("     RESULTS      ")
print ("------------------")
print ("")
print ("Sum: " + str(sum))
print ("")
print ("Product: " + str(product))
print ("")
print ("Integer Division: "+ str(integer))
print ("")
print ("Mod: " + str(mod))
print ("")
print ("Maximum Number: ", max(list1))
print ("")
print ("Minimum Number: ", min(list1))
print ("")
print ("Average: " + str(average))
print ("")
#outputs the list
print ("List: " + str(list1))
print ("")

print (v1 + " " + "".join([star] * int(v1)))
print (v2 + " " + "".join([star] * int(v2)))
print (v3 + " " + "".join([star] * int(v3)))

2 个答案:

答案 0 :(得分:2)

您需要分配到已排序的输出:

srted  = sorted(list1) # creates a new list

要对原始列表进行排序,请使用list.sort

list1.sort()  # sorts original list

您不需要传递密钥来对ints进行排序。

答案 1 :(得分:2)

sorted返回一个必须重新分配的值,并且密钥是不必要的:

list1 = [int(v1), int(v2), int(v3)]
list1 = sorted(list1)

或者,您可以调用列表的sort方法直接修改它而不返回并重新分配:

list1 = [int(v1), int(v2), int(v3)]
list1.sort()