测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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))
上一题 下一题