沃特碧们的Colg

问个简单的代码问题

[复制链接]
发表于 2019-1-11 19:28 | 显示全部楼层 |阅读模式

问个简单的代码问题

50可用积分
import random
#print("t为天,d为地,n为被随机选中的一堆,u为余数,f为每次变化后减少的数量")
t1=random.randint(3, 48)
d1=49-t1
n1=random.choice([t1,d1])
n2=n1-1
if n1==t1:
    u1=n2%4
else:
    u1=t1%4
if u1==0:
    u1=4
else:
    u1=u1
t2=t1-u1
if n1==t1:
    d2=d1
else:
    d2=d1-1
if d2%4==0:
    u2=4
else:
    u2=d2%4
d3=d2-u2
f1=1+u1+u2

T1=random.randint(3, 48-f1)
D1=49-T1-f1
N1=random.choice([T1,D1])
N2=N1-1
if N1==T1:
    U1=N2%4
else:
    U1=T1%4
if U1==0:
    U1=4
else:
    U1=U1
T2=T1-U1
if N1==T1:
    D2=D1
else:
    D2=D1-1
if D2%4==0:
    U2=4
else:
    U2=D2%4
D3=D2-D2
F1=1+U1+U2

T6=random.randint(3, 48-f1-F1)
D6=49-T6-f1-F1
N6=random.choice([T6,D6])
N7=N6-1
if N6==T6:
    U6=N7%4
else:
    U6=T6%4
if U6==0:
    U6=4
else:
    U6=U6
T7=T6-U6
if N6==T6:
    D7=D6
else:
    D7=D6-1
if D7%4==0:
    U7=4
else:
    U7=D7%4
D8=D7-D7
F6=1+U6+U7
#print (t1,d1,n1,n2,u1,t2,u2,d2,d3,f1)
#print (T1,D1,N1,N2,U1,T2,U2,D2,D3,F1)
#print (T6,D6,N6,N7,U6,T7,U7,D7,D8,F6)
yao=int((49-f1-F1-F6)/4)

print ("爻="+str(yao))
Python入门级代码,有没有办法精简下?
题目在这里:周易算卦之六

最佳答案

查看完整内容

算法没改,就是把重复代码用函数替换,你算了三次,用一个循环替换 import random def fun(t1,d1): n1=random.choice([t1,d1]) n2=n1-1 if n1==t1:u1=n2%4 else:u1=t1%4 if u1==0:u1=4 else:u1=u1 t2=t1-u1 if n1==t1:d2=d1 else:d2=d1-1 if d2%4==0:u2=4 else:u2=d2%4 d3=d2-u2 f1=1+u1+u2 return f1 #主函数 print("t为天,d为地,n为被随机选中的一堆,u为余 ...
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 19:28 | 显示全部楼层
算法没改,就是把重复代码用函数替换,你算了三次,用一个循环替换
import random

def fun(t1,d1):
    n1=random.choice([t1,d1])
    n2=n1-1
    if n1==t1:u1=n2%4   
    else:u1=t1%4

    if u1==0:u1=4
    else:u1=u1

    t2=t1-u1
    if n1==t1:d2=d1
    else:d2=d1-1

    if d2%4==0:u2=4
    else:u2=d2%4

    d3=d2-u2
    f1=1+u1+u2
    return f1

#主函数
print("t为天,d为地,n为被随机选中的一堆,u为余数,f为每次变化后减少的数量")
f=0
n=48
for i in range(2):
    n=n-f
    t=random.randint(3, n)
    d=49-t-f
    f=fun(t,d)

#print (t1,d1,n1,n2,u1,t2,u2,d2,d3,f1)
#print (T1,D1,N1,N2,U1,T2,U2,D2,D3,F1)
#print (T6,D6,N6,N7,U6,T7,U7,D7,D8,F6)
yao=int((49-f1-F1-F6)/4)

print ("爻="+str(yao))

点评

厉害  详情 回复 发表于 2019-1-11 23:17
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 19:31 | 显示全部楼层
谢邀,python从入门到放弃
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 19:41 | 显示全部楼层

谢邀,python从入门到放弃
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 21:00 来自移动设备 | 显示全部楼层
代码自己写好懂,看别人的没注释头疼
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 21:27 | 显示全部楼层
把除以4改成乘以0.25
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 21:30 | 显示全部楼层
三块相同的代码,可以考虑写个函数。
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 21:34 | 显示全部楼层
本帖最后由 Tulan 于 2019-1-11 22:11 编辑

我看看




这人还没添加签名啦。别再看她啦
发表于 2019-1-11 21:37 来自移动设备 | 显示全部楼层
挖槽,看个毛,看不懂吖
这人还没添加签名啦。别再看她啦
发表于 2019-1-11 22:10 | 显示全部楼层
感觉手生了,最近都是用Python做数据分析,好多基础语法一下子想不起来
这人还没添加签名啦。别再看她啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|沃特碧们的Colg ( 闽ICP备06029681号 )

GMT+8, 2019-8-18 19:56 , Processed in 0.013499 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! Relife

© 2001-2019

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