关系描述:
两者都可以排序,但a.sort()主要是在原有的列表上进行排序而sorted(a)的方法则是排序后返回一个新列表
上代码--
错误代码:
以年会抽奖为例,抽取30名对其进行排序输出
import random
def sen():
list_n = []
for i in range(1,301) :
n = i
list_n .append(n)
return list_n
#抽奖
def choise():
#定义一个空列表存放获奖人的编号
num_list = []
#调用函数sen()接收1-300的数字
nums_list = sen()
#三等奖
num_list = random.sample(nums_list, 30)
for word in num_list :
nums_list.remove(word) #方便后续去重
num_list = num_list.sort(reverse=False)
# 输出30个人的编号
print("恭喜以下员工获三等奖", num_list)
choise()
错误输出:
问题描述:
从上方输出图片中可以看出来最后输出的值为None,这是因为 列表.sort() 方法只在原有的列表进行修改最后返回None,
那么如何解决这一个问题呢?
方法如下:
第一种:将上述代码中的num_list = num_list.sort(reverse=False)改为
num_list.sort(reverse=False)
print(num_list)
第二种:将上述代码num_list = num_list.sort(reverse=False)删除,直接使用输出函数
print(sorted(num_list)) 或者 num = sorted(num_list) print(num)
最后附上修改后的正确代码:
import random
def sen():
list_n = []
for i in range(1,301) :
n = i
list_n .append(n)
return list_n
#抽奖
def choise():
#定义一个空列表存放获奖人的编号
num_list = []
#调用函数sen()接收1-300的数字
nums_list = sen()
#三等奖
num_list = random.sample(nums_list, 30)
for word in num_list :
nums_list.remove(word) #方便后续去重
num_list.sort()
# 输出30个人的编号
print("恭喜以下员工获三等奖", num_list)
choise()
输出结果:
好啦,学废了吗