鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 169

[复制链接]
发表于 2018-3-23 18:30:45 | 显示全部楼层
本帖最后由 luokaoge 于 2018-3-23 19:04 编辑

import random
time = random. randint(3,10)
def dice():
         print('掷骰子游戏,请掷' + str(time) + '轮骰子,每人掷三次骰子。')
         list_1 = []
         print('开始' + '\n' + '.'+ '\n' + '..' + '\n' + '...')
         for i in range(1,time+1):
             list_2 = []
             for i in range(0,3):
                 a = random. randint(1,6)
                 list_2.append(a)
             list_1.append(tuple(list_2))
         print('掷的骰子为:' + str(list_1))
         b = []
         d = []
         f = []
         for i in range(0,time):
             a = []
             com = list_1[i]
             if com[0] == com[1] == com[2]:
                 a.append(com[0])
                 a.append(i)
             else:
                 a.append(0)
                 a.append(i)
             b.append(tuple(a))
         for i in range(0,time):
             c = []
             com = list_1[i]
             if com[0] == com[1] and com[1] != com[2]:
                 c.append(com[0])
                 c.append(i)
             elif com[1] == com[2] and com[2] != com[0]:
                  c.append(com[1])
                  c.append(i)
             elif com[2] == com[0] and com[0] != com[1]:
                  c.append(com[2])
                  c.append(i)
             else:
                  c.append(0)
                  c.append(i)
             d.append(tuple(c))
         for i in range(0,time):
             e = []
             com = list_1[i]
             if com[0] != com[1] and com[1] != com[2] and com[0] != com[2]:
                 e.append(com[0] + com[1] + com[2])
                 e.append(i)
             else:
                 e.append(0)
                 e.append(i)
             f.append(tuple(e))
         b.sort(key=lambda x:x[0])
         d.sort(key=lambda x:x[0])
         f.sort(key=lambda x:x[0])
         b = list(reversed(b))
         d = list(reversed(d))
         f = list(reversed(f))
         list_r = []
         for i in range(0,time):
             com1 = list(b[i])
             if com1[0] != 0:
                 list_r.append(list_1[com1[1]])
         for i in range(0,time):
             com1 = list(d[i])
             if com1[0] != 0:
                 list_r.append(list_1[com1[1]])
         for i in range(0,time):
             com1 = list(f[i])
             if com1[0] != 0:
                 list_r.append(list_1[com1[1]])
         print('大小顺序为' + str(list_r))
dice()


打印结果

打印结果

点评

测试运行报错  发表于 2018-3-24 21:21
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 19:38:38 | 显示全部楼层
def shu_sum(x,y,z):
    if (x==y) and (x==z):
        p=(x+y+z)*100
    elif ((x==y) and (x!=z)) or ((x==z) and (y!=z)) or ((y==z) and (x!= y)):
        p=(x+y+z)*10
    else:
        p=x+y+z
    return p
b=[]
c=[]
d=[]
a=[(4, 1, 1), (2, 2, 2), (5, 6, 1), (4, 3, 6), (2, 4, 3), (1, 1, 1), (4, 3, 6), (6, 3, 3), (1, 3, 6), (4, 4, 3), (6, 2, 2), (1, 5, 2), (5, 6, 6), (1, 4, 6), (2, 1, 6), (1, 3, 3), (6, 6, 5)]
num_long=len(a)
for i in range(num_long):
    m=a[i][0]
    n=a[i][1]
    l=a[i][2]
    b.append(shu_sum(m,n,l))
    c.append(shu_sum(m,n,l))
print(b)
c.sort()
c.reverse()
for i in range(num_long):
    j=0
    var = 1
    while var==1:
        if c[i]==b[j]:
            d.append(a[j])
            var=2
        j+=1
print("********** 排序的列表 **********")
print(d)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 21:00:52 | 显示全部楼层
s=[(4, 1, 1), (2, 2, 2), (5, 6, 1), (4, 3, 6), (2, 4, 3), (1, 1, 1), (4, 3, 6), (6, 3, 3), (1, 3, 6), (4, 4, 3), (6, 2, 2), (1, 5, 2), (5, 6, 6), (1, 4, 6), (2, 1, 6), (1, 3, 3), (6, 6, 5)]
num=len(s)
a=0;b=0;c=0
A=[()]*2;B=[()]*8;C=[()]*7

#获取三种不同的元组的个数并分别存储在A、B、C列表中
for i in range(0,num):
    n=();n=s[i]
    if n[0] == n[1] == n[2]:
        a +=1
        A[a-1]=n
    elif n[0] != n[1] and n[1] != n[2] and n[0] != n[2]:
        b +=1
        B[b-1]=n
    else:
        c +=1
        C[c-1]=n
        
#对每个元组进行求和
def total(t):
    tn=len(t)
    ts=0
    i=0
    while i <= tn-1:
        ts +=t[i]
        i +=1
   
    return ts


#定义对A和B排序的函数list_fuc(N)  
def list_fuc(N):
    sub=[()]
    for j in range(0,len(N)):
        for i in range(j+1,len(N)):
            if total(N[j]) < total(N[i]):
               sub=N[j]
               N[j]=N[i]
               N[i]=sub
    return N
   
           
#定义函数double_num(M),将重复的数字放在第一位,不重复的数字放在第二位
def double_num(M):
    m=[]*2
    if M[0]==M[1]:
        m=[M[0],M[2]]
    elif M[0]==M[2]:
        m=[M[0],M[1]]
    else:
        m=[M[1],M[0]]
    return m
   
   
#对C进行排序  
suc=[()]            
for i in range(0,c):
    for j in range(i+1,c):
        if double_num(C[i])[0] < double_num(C[j])[0] or (double_num(C[i])[0] == double_num(C[j])[0] and double_num(C[i])[1] < double_num(C[j])[1]) :
            suc=C[i]
            C[i]=C[j]
            C[j]=suc
            
#将结果打印出来
print list_fuc(A)+C+list_fuc(B)  

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 22:45:08 | 显示全部楼层
import random
tri = {}
dou = {}
sin = {}
list1 = []
times = (int)(input('请输入掷骰子次数:'))
for num in range(0, times):
    a = random.randint(1, 6)
    b = random.randint(1, 6)
    c = random.randint(1, 6)
    if (a == b) and (b == c):
        tri[(a, b, c)] = a
    elif (a == b) or (b == c) or (a == c):
        if a == b:
            dou[(a, b, c)] = a
        elif b == c:
            dou[(b, c, a)] = b
        elif a == c:
            dou[(c, a, b)] = c
    else:
        sin[(a, b, c)] = a + b + c
list_tri = sorted(tri.items(), key = lambda item : item[1], reverse = True)
list_dou = sorted(dou.items(), key = lambda item : item[1], reverse = True)
list_sin = sorted(sin.items(), key = lambda item : item[1], reverse = True)
for i in range(0, len(list_tri)):
    list1.append(list_tri[i][0])
for i in range(0, len(list_dou)):
    list1.append(list_dou[i][0])
for i in range(0, len(list_sin)):
    list1.append(list_sin[i][0])
print(list1)
差一个功能:两个一样的,若两个一样的点数相同,如何比较第三个的点数。。。小白求教

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1 参考一下他人的答案

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 23:15:27 | 显示全部楼层
本帖最后由 8306最硬 于 2018-3-23 23:35 编辑

排序一直是弱项啊
def fun(lst):
    def fun1(x):
        if x[0] == x[1] == x[2]: return -7
        if x[0] == x[1]: return -x[0]
        if x[1] == x[2]: return -x[2]       
        return 0

    lst = sorted(lst, key = sum, reverse = True)
    lst = sorted(lst, key = fun1)

    return lst

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 23:32:17 | 显示全部楼层
'''
这回我们来掷骰子,每轮掷3个骰子,多轮掷后,将骰子的点数记为一个列表,例如:
[(4, 1, 1), (2, 2, 2), (5, 6, 1), (4, 3, 6), (2, 4, 3), (1, 1, 1), (4, 3, 6),
 (6, 3, 3), (1, 3, 6), (4, 4, 3), (6, 2, 2), (1, 5, 2), (5, 6, 6), (1, 4, 6), 
 (2, 1, 6), (1, 3, 3), (6, 6, 5)]
现在要将每轮的掷骰子的情况由大到小排序,
规则是,三个一样的最大,两个一样的次之,然后是都不一样的。
三个一样的最大再以点数排序,两个一样的,先比较两个一样的点数,
如果还相同,再比较第三个的点数,都不一样的按点数之后。
例如:(6,6,6)>(1,1,1)>(5,5,2)>(4,4,6)>(6,5,4)>(3,2,1)
最后给出按此规则排序的列表。
注:点数相同的排序次序不限,如(6,3,1)和(5,4,1)谁排在前面都行。
'''
#定义一个函数,参数为元组,返回一个数字
#各个位数表达分别为:点数相同个数、点位相同的数值、各点数之和(占两位)
def mysort(t):
    s=t[0]+t[1]+t[2]
    num=0
    if t[0]==t[1]:
        if t[0]==t[2]:
            num=3000+t[0]*100+s
        else:
            num=2000+t[0]*100+s
    elif t[0]==t[2]:
        num=2000+t[0]*100+s
    elif t[1]==t[2]:
        num=2000+t[1]*100+s
    else:
        num=1000+s
    return num

myl=[(4, 1, 1), (2, 2, 2), (5, 6, 1), (4, 3, 6), (2, 4, 3), (1, 1, 1), (4, 3, 6),
 (6, 3, 3), (1, 3, 6), (4, 4, 3), (6, 2, 2), (1, 5, 2), (5, 6, 6), (1, 4, 6), 
 (2, 1, 6), (1, 3, 3), (6, 6, 5)]
print(sorted(myl,key=mysort,reverse=True))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 00:58:48 | 显示全部楼层
本帖最后由 冰封雪舞 于 2018-3-24 01:11 编辑

import random
tt=[]
w=int(input('请输入你想要扔骰子的次数'))

for i in range(0,w):
    a = random.randint(1,6)
    b = random.randint(1,6)
    c = random.randint(1,6)
    tt.append([a,b,c])
print('3个骰子扔%d次是'%w,tt)
a1=[]
b20=[]
b=[]
c3=[]
for i in tt:
    if i[0]==i[1]==i[2]:
        a1.append(i)
    elif i[0]==i[1]:
        b20.append([i[0],i[2],tt.index(i)])
    elif i[1]==i[2]:
        b20.append([i[1],i[0],tt.index(i)])
    elif i[0]==i[2]:
        b20.append([i[2],i[1],tt.index(i)])        
    else:
        c3.append(i)
a=sorted(a1,key=lambda x:x[0],reverse=True)
b0=sorted(b20,key=lambda x:x[1],reverse=True)
b0=sorted(b0,key=lambda x:x[0],reverse=True)

for bb in b0:
    b.append(tt[bb[2]])

c=sorted(c3,key=lambda x:x[0]+x[1]+x[2],reverse=True)
a.extend(b)
a.extend(c)
print('按规则排序后是',a)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 08:19:34 From FishC Mobile | 显示全部楼层
#!/usr/bin/python
a = [(4, 1, 1), (2, 2, 2), (5, 6, 1), (4, 3, 6), (2, 4, 3), (1, 1, 1), (4, 3, 6), (6, 3, 3), (1, 3, 6), (4, 4, 3), (6, 2, 2), (1, 5, 2), (5, 6, 6), (1, 4, 6), (2, 1, 6), (1, 3, 3), (6, 6, 5)]
def sortA(a):
        allSame = sorted([i for i in a if len(set(i)) == 1], key = lambda x: x[0], reverse = True)
        twoSame = [i for i in a if len(set(i)) == 2]
        noSame = sorted([i for i in a if len(set(i)) == 3], key = lambda x: sum(x), reverse = True)
        def f(lst):
                a,b = sorted([i for i in set(lst)], key = lambda x: lst.count(x), reverse = True)
                return a,b
        twoSame = sorted(twoSame, key = f, reverse = True)
        allSame.extend(twoSame)
        allSame.extend(noSame)
        return allSame

print(sortA(a))

##  结果:
##  [(2, 2, 2), (1, 1, 1), (5, 6, 6), (6, 6, 5), (4, 4, 3), (6, 3, 3), (1, 3, 3), (6, 2, 2), (4, 1, 1), (4, 3, 6), (4, 3, 6), (5, 6, 1), (1, 4, 6), (1, 3, 6), (2, 4, 3), (2, 1, 6), (1, 5, 2)]

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 09:23:20 | 显示全部楼层
本帖最后由 victor.xu 于 2018-3-24 10:17 编辑
def f(lis):
    lis1 = []
    lis3 = []
    for i in lis:
        lis2 = []
        if len(set(i)) == 1:
            n = 3
        elif len(set(i)) == 2:
            n = 2
        else:
            n = 0
        lis2.append(n)
        j = list(i)
        for k in j:
            if j.count(k) == 2:
                j.remove(k)
                j.remove(k)
                j.insert(0, k)
                j.insert(0, k)
                i = tuple(j)
        lis2.append(i)
        lis1.append(lis2)
    lis1.sort(reverse = True)
    for m in lis1:
        lis3.append(m[1])
    return lis3
lis = [(4, 1, 1), (2, 2, 2), (5, 6, 1), (4, 3, 6), (2, 4, 3), (1, 1, 1), (4, 3, 6), (6, 3, 3), (1, 3, 6), (4, 4, 3), (6, 2, 2), (1, 5, 2), (5, 6, 6), (1, 4, 6), (2, 1, 6), (1, 3, 3), (6, 6, 5)]
result = f(lis)
print(result)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 09:36:19 | 显示全部楼层
本帖最后由 yjsx86 于 2018-3-24 10:10 编辑
import random
def rankPoint(times):
    while times:
        points = [(1,1,1)]+[tuple([random.randint(1,6) for y in range(3)]) for x in range(15)]+[(5,5,5)]
        print('排序前:%s' % points)
        print('排序后:%s' % sorted(points,key=lambda x:(len(set(x)),[-i for i in x if x.count(i) == 2],-sum(x))))
        print()
        times -= 1
if __name__ == '__main__':
    rankPoint(5)
排序前:[(1, 1, 1), (2, 5, 4), (6, 3, 2), (4, 4, 3), (5, 2, 6), (3, 5, 6), (1, 2, 4), (1, 2, 4), (5, 1, 6), (1, 4, 4), (4, 4, 4), (3, 1, 3), (6, 2, 4), (3, 3, 3), (4, 1, 5), (1, 3, 4), (5, 5,5)]
排序后:[(5, 5, 5), (4, 4, 4), (3, 3, 3), (1, 1, 1), (4, 4, 3), (1, 4, 4), (3, 1, 3), (3, 5, 6), (5, 2, 6), (5, 1, 6), (6, 2, 4), (2, 5, 4), (6, 3, 2), (4, 1, 5), (1, 3, 4), (1, 2, 4), (1, 2,4)]

排序前:[(1, 1, 1), (1, 6, 5), (1, 3, 3), (1, 5, 5), (6, 2, 4), (3, 2, 3), (1, 3, 5), (2, 6, 4), (1, 4, 4), (5, 1, 5), (3, 3, 6), (5, 4, 2), (4, 4, 1), (5, 6, 3), (2, 1, 5), (1, 6, 3), (5, 5,5)]
排序后:[(5, 5, 5), (1, 1, 1), (1, 5, 5), (5, 1, 5), (1, 4, 4), (4, 4, 1), (3, 3, 6), (3, 2, 3), (1, 3, 3), (5, 6, 3), (1, 6, 5), (6, 2, 4), (2, 6, 4), (5, 4, 2), (1, 6, 3), (1, 3, 5), (2, 1,5)]

排序前:[(1, 1, 1), (5, 5, 4), (3, 1, 6), (2, 3, 5), (6, 1, 4), (3, 6, 6), (5, 3, 3), (2, 6, 6), (6, 2, 3), (6, 6, 2), (5, 3, 1), (2, 5, 3), (6, 5, 2), (5, 5, 2), (3, 6, 6), (6, 1, 3), (5, 5,5)]
排序后:[(5, 5, 5), (1, 1, 1), (3, 6, 6), (3, 6, 6), (2, 6, 6), (6, 6, 2), (5, 5, 4), (5, 5, 2), (5, 3, 3), (6, 5, 2), (6, 1, 4), (6, 2, 3), (3, 1, 6), (2, 3, 5), (2, 5, 3), (6, 1, 3), (5, 3,1)]

排序前:[(1, 1, 1), (6, 5, 5), (2, 1, 4), (6, 4, 3), (2, 6, 4), (5, 1, 5), (3, 4, 2), (6, 1, 2), (3, 6, 3), (4, 1, 1), (4, 2, 2), (2, 5, 6), (3, 2, 3), (6, 2, 2), (5, 3, 2), (6, 5, 3), (5, 5,5)]
排序后:[(5, 5, 5), (1, 1, 1), (6, 5, 5), (5, 1, 5), (3, 6, 3), (3, 2, 3), (6, 2, 2), (4, 2, 2), (4, 1, 1), (6, 5, 3), (6, 4, 3), (2, 5, 6), (2, 6, 4), (5, 3, 2), (3, 4, 2), (6, 1, 2), (2, 1,4)]

排序前:[(1, 1, 1), (1, 4, 1), (5, 4, 1), (4, 2, 5), (5, 6, 5), (3, 3, 4), (1, 2, 6), (3, 6, 5), (3, 5, 2), (6, 2, 3), (4, 6, 2), (4, 5, 6), (2, 6, 4), (4, 6, 3), (5, 2, 5), (2, 5, 5), (5, 5,5)]
排序后:[(5, 5, 5), (1, 1, 1), (5, 6, 5), (5, 2, 5), (2, 5, 5), (3, 3, 4), (1, 4, 1), (4, 5, 6), (3, 6, 5), (4, 6, 3), (4, 6, 2), (2, 6, 4), (4, 2, 5), (6, 2, 3), (5, 4, 1), (3, 5, 2), (1, 2,6)]

评分

参与人数 2荣誉 +8 鱼币 +8 贡献 +3 收起 理由
8306最硬 + 5 + 5 + 3 天秀
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 09:57:29 | 显示全部楼层
写的脑瓜子老大,总算写出来了
import random
number = []
list1 = [1, 6]
three = []
two =[]
one = []
two_dict = {}
def dice_number():
    number = []
    for a in range(3):
        number.append(random.randint(list1[0],list1[1]))
    return list(number)

def people_number(num):
    count = 0
    for i in range(num):
        number.append(dice_number())
        yield sorted(number[count],reverse=True)
        count += 1

def input_num():
    count = 0
    temp = int(input('请输入几个人玩游戏:'))

    for i in people_number(temp):
        count += 1
        input('第%d个人是%s'%(count,i))

def change_num():
    count = -1
    for a in number:
        count += 1
        for b in range(len(a)):
            if a[count] == a[count+1] == a[count+2]:
                three.append(sorted(a,reverse=True))
                count = -1
                break
            if a[count] == a[count+1] or a[count] == a[count+2] or a[count+1] ==a[count+2]:
                two.append(sorted(a,reverse=True))
                count = -1
                break
            else:
                one.append(sorted(a,reverse=True))
                count = -1
                break

def main():
    input_num()
    change_num()
    thr = sorted(three,reverse=True)
    for a in thr:
        print(tuple(a),end='>')

    for b in two:
        for c in range(1):
                if b[0] == b[1]:
                    if (b[0],b[1]) in two_dict.keys():
                        two_dict[b[0],b[1]] += str(b[2])
                    else:
                        two_dict[b[0], b[1]] = str(b[2])
                elif b[0] == b[2]:
                    if (b[0],b[2]) in two_dict.keys():
                        two_dict[b[0],b[2]] += str(b[1])
                    else:
                        two_dict[b[0], b[2]] = str(b[1])
                elif b[1] == b[2]:
                    if (b[1],b[2]) in two_dict.keys():
                        two_dict[b[1],b[2]] += str(b[0])
                    else:
                        two_dict[b[1], b[2]] = str(b[0])
    two_dict1 = dict(sorted(two_dict.items(), key=lambda e: e[0], reverse=True))
    cc = 0
    for aa in two_dict1.values():
        for bb in aa :
            cc += 1
    try:
        for d,e in two_dict1.items():
            for f in sorted(e,reverse=True):
                cc -= 1
                if cc or one != []:
                    print('(',d[0],',',d[1],',',f,')',end='>')
                else:
                    print('(',d[0],',',d[1],',',f,')',end='')
    except IndexError:
        pass
    one_dict1 = dict()

    one_list1 = []
    dd = 0

    for g in one:
        for k in range(1):
            one_list1.append(g[0]+g[1]+g[2])

    for m in one:
        for l in range(1):
            if (m[0],m[1],m[2]) in one_dict1.keys():
                dd += 1
                one_dict1[((m[0],m[1],m[2])),dd] = m[0]+m[1]+m[2]
            else:
                one_dict1[(m[0], m[1], m[2])] = m[0] + m[1] + m[2]
    one_dict2 = dict(sorted(one_dict1.items(), key=lambda eee: eee[1], reverse=True))
    con = len(one_dict2.values())
    for kkk in one_dict2.keys():
        con -= 1
        if len(kkk) == 3 and con != 0:
            print(kkk,end='>')
        elif len(kkk) == 3 and con == 0:
            print(kkk,end='')
        if len(kkk) !=3 and con !=0:
            print(kkk[0],end='>')
        elif len(kkk) !=3 and con ==0:
            print(kkk[0],end='')

main()

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3 程序没问题,不过点数相同的也用大于号了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 11:55:35 | 显示全部楼层
本帖最后由 the0503 于 2018-3-24 23:05 编辑
import random
def rev(lst):  #添加标识符并内部排序
        lst2=sorted(list(lst))
        lst2.reverse()
        lst1=[]
        x,y,z = lst2
        if x == y and y == z:
            lst1 = [3,tuple(lst2)]
            return lst1
        elif x == y or y ==z :
            lst1 = [2,tuple(lst2)]
            return lst1
        else:
            lst1 = [1,tuple(lst2)]
            return lst1

def zhi():  #生成数组
        a1=random.randint(1,6)
        a2=random.randint(1,6)
        a3=random.randint(1,6)
        return (a1,a2,a3)

def comp(lst1,lst2):
        if lst1[0]== 2 and lst2[0] ==2: #比较标识符
                if lst1[1][1]>lst2[1][1]: #特例是有一对时,比较第二位即可
                        return True
                elif lst1[1][1] == lst2[1][1]:
                    return sum(lst1[1]) > sum(lst2[1])
                else:
                        return False
        elif lst1[0]== 1 and lst2[0] ==1:
            return sum(lst1[1]) > sum(lst2[1])
        else:
                return lst1>lst2

def sortlst(lst):
    c = len(lst)
    for i in range(c-1):
        for l in range(c-1-i):
            if comp(lst[l],lst[l+1])==False:
                lst[l],lst[l+1] = lst[l+1],lst[l]
    return lst
            
lst = []
lst1 = []
lst3 = []
num = int(input('骰子掷几次:'))
for i in range(num):  #生成骰子数组
        temp = zhi()
        lst.append(temp)
for l in lst:   #添加对比符号
    l = rev(l)
    lst1.append(l)
lst2=sortlst(lst1)

for m in lst2:
    lst3.append(m[1])
print(lst3)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-24 21:32:51 | 显示全部楼层

测试有问题
骰子掷几次:30
[(1, 1, 1), (6, 6, 3), (6, 6, 3), (6, 5, 3), (6, 5, 3), (6, 5, 3), (5, 5, 4), (5, 5, 2), (5, 5, 1), (5, 5, 1), (5, 5, 1), (6, 4, 4), (5, 3, 3), (6, 4, 2), (3, 3, 2), (6, 2, 2), (6, 4, 2), (6, 4, 1), (6, 4, 1), (6, 4, 1), (6, 3, 2), (5, 4, 3), (5, 2, 2), (3, 2, 2), (2, 2, 1), (5, 4, 3), (5, 1, 1), (5, 2, 1), (4, 3, 2), (4, 3, 1)]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-24 21:33:07 | 显示全部楼层
评分截至标记
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 22:10:53 | 显示全部楼层

大佬们的思路总是让人耳目一新,一些常见的BIF也能玩出花样~~看来想要进阶,得认真看看help()了~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 22:15:29 | 显示全部楼层
Chase_Kas 发表于 2018-3-24 22:10
大佬们的思路总是让人耳目一新,一些常见的BIF也能玩出花样~~看来想要进阶,得认真看看help()了~~

不是大佬,3个月前我是C语言都不懂的人,想跳槽才开始接触python
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 22:26:24 | 显示全部楼层
本帖最后由 Chase_Kas 于 2018-3-24 22:30 编辑


怎么这么厉害的..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 23:26:26 | 显示全部楼层
>>> fuck([(3,3,1),(3,2,3),(4,3,3),(3,3,3)])
[(3, 3, 3), (3, 3, 1), (3, 2, 3), (4, 3, 3)]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 19:01:03 | 显示全部楼层

我....这个代码写的简洁、漂亮,羡慕,看了半天,最后发现好像如果有2次2个筛子数值一样的没法根据第三个筛子分大小,比如(2,3,2),(2,1,2),(2,4,2),(2,55,2),其实分辨这种情况才是这道题最难的难点,结果你用颜值混过去了,能把这种情况也写出来吗?我也学习学习,我写的好长,虽然能解决问题,但是看着好笨拙。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 19:06:22 | 显示全部楼层

你这个纯属考颜值糊弄人,两个筛子仍一样的点数,按两个一样大小的筛子数值分大小,如果出现两个这种情况,再按第三个筛子分大小,你这算法很多种情况分的都错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表