A50787. 在进行扑克游戏时,有人习惯于将抓到的扑克牌先按同名牌的数量排序,再按牌的大小排序。请编写程序,模拟这种排序方法:要求:(1)接收用户输入的若干整数(1到13之间,每个数字用逗号隔开,相同数字最多出现4个);(2)通过函数将这些整数排序,先按相同整数的数目由多到少排序,相同数目的整数再按从大到小排序,将排好序的数字放入一个元组中,并将元组打印到屏幕上。提示:(1)接收用户输入的用逗号隔开的整数,将…
填空题
中等
知识点
题目描述
在进行扑克游戏时,有人习惯于将抓到的扑克牌先按同名牌的数量排序,再按牌的大小排序。请编写程序,模拟这种排序方法:
要求:
(1)接收用户输入的若干整数(1到13之间,每个数字用逗号隔开,相同数字最多出现4个);
(2)通过函数将这些整数排序,先按相同整数的数目由多到少排序,相同数目的整数再按从大到小排序,将排好序的数字放入一个元组中,并将元组打印到屏幕上。
提示:
(1)接收用户输入的用逗号隔开的整数,将其转换成方便处理的列表或元组;
(2)利用函数将不同数目的整数分隔开,放入不同的列表中(card函数可以实现)
(3)针对不同的列表进行排序操作(在card函数基础上继续编写代码)
(4)将排好序的列表中的项目依次组合,并转换成一个元组打印到屏幕上。
注:input()函数中不要增加任何参数等提示信息。
例:输出:(1, 1, 1, 1, 6, 6, 3, 3, 9, 5, 4, 2)
输出:(1, 1, 1, 1, 6, 6, 3, 3, 9, 5, 4, 2)
参考答案
def card(all):
card_once =[]
card_twice = []
card_three_times=[]
card_four_times=[]
for i in all:
count = 0
for j in all:
if i ==j:
count +=1
if count ==1:
card_once.append(i)
if count == 2:
card_twice.append(i)
if count == 3:
card_three_times.append(i)
else:
card_four_times.append(i)
card_four_times.sort(reverse =True)
card_three_times.sort(reverse =True)
card_twice.sort(reverse =True)
card_once.sort(reverse =True)
result =[]
result.extend(card_four_times)
result.extend(card_three_times)
result.extend(card_twice)
result.extend(card_once)
result tuple(result)
all = eval(input())
print(card(all))
上一题
下一题