Python学习记录:排序

输入一串数字,排序输出(升序)

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('输入的数字串如下:\n',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('排序后(升序):\n',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('输入的数字串如下:\n',list_test)
t=sorted(list_test)
print('排序后(升序):\n',t)

'''
输出:
请输入需排序的数字串(以‘,’分隔):8,9,5,2,1
输入的数字串如下:
[8, 9, 5, 2, 1]
排序后(升序):
[1, 2, 5, 8, 9]
'''

 

posted @ 2019-10-17 14:52  飞奔的小猪猪  阅读(185)  评论(0编辑  收藏  举报