
Lv.1
回到社区
签名:
在 【Python作品分享】2~16进制互相转化程序【作品秀】 中回复
我有本作品的教程:https://shequ.codemao.cn/community/405365
2021-10-05T17:31:10 点赞:0
在 谁会做一些比较好玩的游戏。 中回复
2048游戏:
import random
h=[]
i=0
while i<16:
h.append(0)
i+=1
l=random.randint(0,15)
l2=random.randint(0,15)
while l2==l:
l2=random.randint(0,15)
h[l]=2
h[l2]=2
win=0
while True:
i=0
pzf=' '
while i<16:
if (i+1)%4==1:
pzf=str(h[i])
else:
pzf=pzf+str(h[i])
if (i+1)%4==0:
print(pzf)
else:
j=0
while j<5-(len(str(h[i]))):
pzf=pzf+' '
j+=1
i+=1
i=0
while i<16:
if h[i]==2048:
print("你组合出了2048!!!你赢了!!!")
win=1
break
i+=1
if win==1:
break
i=0
xh=1
while i<16:
if h[i]==0:
xh=0
break
i+=1
if xh==1:
js=0
i=0
while i<16:
if i%4!=3:
if h[i]==h[i+1]:
js+=1
i+=1
i=0
while i<4:
j=0
while j<=8:
if h[i+j]==h[i+j+4]:
js+=1
j+=4
i=i+1
if js==0:
print("没法拼接了,你输了……")
break
try:
x=float(input("你要做什么决策?(1上2下3左4右):"))
except ValueError:
print("ERROR:你的输入为字符串")
break
if x-(float(int(x)))>0:
print("ERROR:你的输入为小数")
break
x=int(x)
if x==1:
i=4
while i<16:
f=i
if h[i]!=0:
while f>=0:
if h[f]!=0 and f!=i:
if h[f]==h[i]:
h[f]+=h[i]
h[i]=0
else:
if f!=i-4:
h[f+4]=h[i]
h[i]=0
break
f-=4
if h[f+4]==0 and f<0:
h[f+4]=h[i]
h[i]=0
i+=1
i=0
g=0
while i<16:
if h[i]==0:
g=1
break
i+=1
if g==1:
l=random.randint(0,15)
while h[l]!=0:
l=random.randint(0,15)
js=random.randint(1,2)
h[l]=js*2
elif x==2:
i=11
while i>=0:
f=i
if h[i]!=0:
while f<=15:
if h[f]!=0 and f!=i:
if h[f]==h[i]:
h[f]+=h[i]
h[i]=0
else:
if f!=i+4:
h[f-4]=h[i]
h[i]=0
break
f+=4
if h[f-4]==0 and f>15:
h[f-4]=h[i]
h[i]=0
i-=1
i=0
g=0
while i<16:
if h[i]==0:
g=1
break
i+=1
if g==1:
l=random.randint(0,15)
while h[l]!=0:
l=random.randint(0,15)
js=random.randint(1,2)
h[l]=js*2
elif x==4:
i=15
while i>=0:
if i%4!=3:
f=i
if h[i]!=0:
while f<=((int(i/4))*4+3):
if h[f]!=0 and f!=i:
if h[f]==h[i]:
h[f]+=h[i]
h[i]=0
else:
if f!=i+1:
h[f-1]=h[i]
h[i]=0
break
f+=1
if h[f-1]==0 and f>((int(i/4))*4+3):
h[f-1]=h[i]
h[i]=0
i-=1
i=0
g=0
while i<16:
if h[i]==0:
g=1
break
i+=1
if g==1:
l=random.randint(0,15)
while h[l]!=0:
l=random.randint(0,15)
js=random.randint(1,2)
h[l]=js*2
elif x==3:
i=1
while i<16:
if i%4!=0:
f=i
if h[i]!=0:
while f>=((int(i/4))*4):
if h[f]!=0 and f!=i:
if h[f]==h[i]:
h[f]+=h[i]
h[i]=0
else:
if f!=i-1:
h[f+1]=h[i]
h[i]=0
break
f-=1
if h[f+1]==0 and f<((int(i/4))*4):
h[f+1]=h[i]
h[i]=0
i+=1
i=0
g=0
while i<16:
if h[i]==0:
g=1
break
i+=1
if g==1:
l=random.randint(0,15)
while h[l]!=0:
l=random.randint(0,15)
js=random.randint(1,2)
h[l]=js*2
else:
print("ERROR:你输入的整数不合理")
break2021-10-09T21:38:47 点赞:0
在 【Python作品分享】进制转换 中回复
2~36进制互相转化程序代码(支持小数,已转化数字的精确程度有上限,不过还是相对比较精确的):
def main():
fml=['0','1','2','3',
'4','5','6','7',
'8','9','aA','bB',
'cC','dD','eE','fF',
'gG','hH','iI','jJ',
'kK','lL','mM','nN',
'oO','pP','qQ','rR',
'sS','tT','uU','vV',
'wW','xX','yY','zZ']
try:
j1=float(input('请输入被转化数字的进制数:'))
except ValueError:
print('输入错误。')
return 0
if int(j1)!=j1:
print('输入错误。')
return 0
j1=int(j1)
if j1>36 or j1<2:
print('输入错误。')
return 0
try:
j2=float(input('请输入已转化数字的进制数:'))
except ValueError:
print('输入错误。')
return 0
if int(j2)!=j2:
print('输入错误。')
return 0
j2=int(j2)
if j2>36 or j2<2:
print('输入错误。')
return 0
num=input('请输入被转化数字:')
i1=0
i2=0
ofa=0
num1=[]
num2=[]
if len(num)==0:
print('输入错误。')
return 0
for i1 in range(0,len(num)):
if num[i1]=='.':
if i1==0 or i1==len(num)-1:
print('输入错误。')
return 0
ofa+=1
if ofa>=2:
print('输入错误。')
return 0
else:
ftla=0
for i2 in range(0,36):
if len(fml[i2])==1:
if fml[i2]==num[i1]:
ftla=1
break
else:
if (fml[i2])[0]==num[i1] or (fml[i2])[1]==num[i1]:
ftla=1
break
if ftla==1:
if i2>=j1:
print('输入错误。')
return 0
if ofa==0:
num1.append(i2)
else:
num2.append(i2)
else:
print('输入错误。')
return 0
s1=0
for i1 in range(0,len(num1)):
s1+=num1[i1]*(j1**(len(num1)-1-i1))
for i1 in range(0,len(num2)):
s1+=num2[i1]*(1/(j1**(i1+1)))
s1a=int(s1)
s1b=s1-s1a
pres2a=[]
pres喵=[]
if s1a==0:
pres2a=[0]
while s1a>0:
pres2a.append(s1a%j2)
s1a=s1a//j2
pres2a.reverse()
i1=1
while s1b>0.0000000001:
k=int(s1b/(1/(j2**i1)))
pres喵.append(k)
s1b-=(k*(1/(j2**i1)))
i1+=1
s2a=' '
s喵=' '
for i1 in range(0,len(pres2a)):
if s2a==' ':
s2a=(fml[pres2a[i1]])[0]
else:
s2a=s2a+((fml[pres2a[i1]])[0])
for i1 in range(0,len(pres喵)):
if s喵==' ':
s喵=(fml[pres喵[i1]])[0]
else:
s喵=s喵+((fml[pres喵[i1]])[0])
if s喵==' ':
print('已转化数字:'+s2a)
else:
print('已转化数字:'+s2a+'.'+s喵)
ms=main()2021-10-10T12:19:22 点赞:0
在 【kitten4.0反馈】遇到问题不要怕,技术喵来帮你忙! 中回复
最近发现了很多不明原因导致的BUG,比如作品名称在开发过程中突然被修改,切换到某个屏幕后打印的文本还在的特性时隐时现,作品积木在开发过程中凭空被修改,最新版的K4有很多凭空出现的BUG,望修复。(有时会出现,但也不是经常出现)
2021-10-23T17:24:44 点赞:0
在 【kitten4.0反馈】遇到问题不要怕,技术喵来帮你忙! 中回复
最近发现了很多不明原因导致的BUG,比如作品名称在开发过程中突然被修改,切换到某个屏幕后打印的文本还在的特性时隐时现,作品积木在开发过程中凭空被修改,最新版的K4有很多凭空出现的BUG,望修复。(有时会出现,但也不是经常出现)
2021-10-28T19:17:30 点赞:0
在 【Python作品分享】穷举法&方程法——鸡兔同笼(教程)【教程贴】 中回复
鸡兔同笼解法:
脚=鸡*2+兔*4=(鸡+兔)*2+兔*2=头*2+兔*2
兔=(脚-头*2)/2
鸡=头-兔
2021-11-18T19:25:30 点赞:0
在 【……水】建议大汇总整理 中回复
我觉得这里也有的没用啊……比如切换背景根本就不常用,所以当背景切换到也没意义。而且大部分大作都用文字印章代替变量列表显示了,所以变量列表上上下下调整也没有意义……
2022-02-10T15:02:59 点赞:0