鱼C论坛

 找回密码
 立即注册
查看: 1779|回复: 3

写了一个24点计算器,有没有大神看看for循环怎么优化...

[复制链接]
发表于 2018-6-3 20:30:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 bowen628 于 2018-6-5 16:41 编辑
  1. #!/usr/bin/env python3
  2. # coding:utf-8

  3. import itertools

  4. spc1 = ['(','']

  5. spc2 = ['/','-','*','+']
  6. spc3 = ['']

  7. spc4 = [')','']
  8. spc5 = ['/','-','*','+']
  9. spc6 = ['(','']

  10. spc7 = [')','']
  11. spc8 = ['/','-','*','+']

  12. spc9 = [')','']

  13. a=str(input("一号位数字: "))
  14. b=str(input("二号位数字: "))
  15. c=str(input("三号位数字: "))
  16. d=str(input("四号位数字: "))

  17. f = (d,c,b,a)
  18. for i1 in range(0,2):
  19.         for i2 in range(0,4):
  20.                 for i4 in range(0,2):
  21.                         for i5 in range(0,4):
  22.                                 for i6 in range(0,2):
  23.                                         for i7 in range(0,2):
  24.                                                 for i8 in range(0,4):
  25.                                                         for i9 in range(0,2):
  26.                                                                 for i in itertools.permutations(f, 4):
  27.                                                                         if i1 == 0 and i9 == 0 and i4 == 1 and i6 == 1:
  28.                                                                                 continue
  29.                                                                         if i2 == 1 and i[0]<i[1]:
  30.                                                                                 continue
  31.                                                                         if i4 == 0 and (i5 == 1 or i5 == 3):
  32.                                                                                 continue
  33.                                                                         if i4 == 0 and (i2 == 0 or i2 == 2):
  34.                                                                                 continue
  35.                                                                         if i6 == 0 and i7 == 0:
  36.                                                                                 continue
  37.                                                                         if i6 == 0 and (i5 == 1 or i5 == 3):
  38.                                                                                 continue
  39.                                                                         if i6 == 0 and (i8 == 0 or i8 == 2):
  40.                                                                                 continue
  41.                                                                         if i7 == 0 and (i2 == 0 or i2 == 2) and (i5 == 0 or i5 == 2):
  42.                                                                                 continue
  43.                                                                         if i7 == 0 and (i8 == 1 or i8 == 3):
  44.                                                                                 continue
  45.                                                                         if i5 == 1 and i[1]<i[2]:
  46.                                                                                 continue
  47.                                                                         if i8 == 1 and i[2]<i[3]:
  48.                                                                                 continue
  49.                                                                                
  50.                                                                         try:
  51.                                                                                 jisuan = (spc1[i1]+i[0]+spc2[i2]+spc3[0]+i[1]+spc4[i4]+spc5[i5]+spc6[i6]+i[2]+spc7[i7]+spc8[i8]+i[3]+spc9[i9])
  52.                                                                                 jieguo = eval(jisuan)

  53.                                                                                 if jieguo == 24:
  54.                                                                                         print(jisuan+' = 24')
  55.                                                                         except:
  56.                                                                                 continue
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-6-3 20:43:58 | 显示全部楼层
本帖最后由 bowen628 于 2018-6-3 23:24 编辑

虽然这样写可以算出24点...

但是一堆for连环嵌套实在太难看了...

求大神给点建议...
屏幕快照 2018-06-03 下午8.42.08.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-3 23:25:32 | 显示全部楼层

求大佬!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-3 23:30:08 | 显示全部楼层
试试二叉树
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-30 16:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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