输入一串数字,排序输出(升序)
1、首先使用冒泡排序,看代码
str=input('请输入需排序的数字串(以‘,’分隔):')
list_test=str.split(',')
#print(list_test)
for i in range(len(list_test)):
list_test[i]=int(list_test[i])
print('输入的数字串如下:
',list_test)
def sort_test(m): #冒泡排序
for i in range(len(m)-1):
for j in range(len(m)-1-i):
if m[j]>m[j+1]:
m[j],m[j+1]=m[j+1],m[j]
return m
print('排序后(升序):
',sort_test(list_test))
运行这段代码,输入字符串如#等,会出现报错‘ValueError: invalid literal for int() with base 10: '#'’
原因是:值的类型转换错误。int(str)将符合整数的规定的字符串转换成int型的,所以这里使用int()函数来转换‘#’是不可以的
若是输入为浮点型,可将int()函数替换为float()函数。
2、内建函数sort或sorted
sort()函数和sorted()函数都可排序,主要区别:sort直接改变列表的内容;sorted是不改变原列表的内容,根据一个可迭代对象建立一个新的列表
str=input('请输入需排序的数字串(以‘,’分隔):')
list_test=str.split(',')
#print(list_test)
for i in range(len(list_test)):
list_test[i]=int(list_test[i])
print('输入的数字串如下:
',list_test)
t=sorted(list_test)
print('排序后(升序):
',t)
'''
输出:
请输入需排序的数字串(以‘,’分隔):8,9,5,2,1
输入的数字串如下:
[8, 9, 5, 2, 1]
排序后(升序):
[1, 2, 5, 8, 9]
'''