找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4808|回复: 6

[求助] 有哪位大神帮我看看错在哪里了?

1

主题

6

帖子

6

积分

贫民

积分
6
子非鱼 发表于 2016-11-26 21:59:56 | 显示全部楼层 |阅读模式
import random
qp=[[0 for column in range(8)] for row in range(6)]
每一列的当前位置=[0,0,0,0,0,0,0,0]
def Type(qp):
      print(' 1 2 3 4 5 6 7 8')
      for i in range(5,-1,-1):
            for j in range(8):
                  qz=qp[i][j]
                  if qz==0:
                        qz=' '
                  print('|'+qz,end='')
            print('|')
      print('-----------------')
def Winner(qp):
      x=[qp[i][j]==qp[i][j+1] for i in range(6) for j in range(7)]
      y=[qp[i][j]==qp[i+1][j] for i in range(5) for j in range(8)]
      z=[qp[i][j]==qp[i+1][j+1] for i in range(5) for j in range(7)]
      s=[qp[i][j]==qp[i+1][j+1] for i in range(5) for j in range(7)]
      if x.count(True)==4:
            return True
      elif y.count(True)==4:
            return True
      elif z.count(True)==4:
            return True
      elif s.count(True)==4:
            return True
      else:
            return False
      
print('''Hi,我是劳拉,我们来玩一局四联环.我用O型棋子,你用X型棋子。
游戏规则:双方轮流选择棋盘的列号放进自己的棋子,
         若棋盘上有四颗相同型号的棋子在一行,一列或一条斜线上连接起来
         则使用该型号棋子的玩家就赢了!
               
开始了!这是棋盘的初始状态:''')
Type(qp)
while True:
      while True:
            lurachess=random.randint(0,7)
            if 每一列的当前位置[lurachess]!=8:
                  break
            if sum(每一列的当前位置)==64:
                  print('棋逢对手')
                  break
      每一列的当前位置[lurachess]+=1
      for i in range(6):
            if qp[i][lurachess]==0:
                  qp[i][lurachess]='O'
                  break
      print('劳拉:轮到我了,我把“O”型棋子放在第%d列'%i)
      Type(qp)
      if Winner(qp):
            print('承让了我的弟')
            break
      while True:
            yourchess=eval(input('请问您要在第几列落子?'))-1
            if yourchess<0 or yourchess>8:
                  print('土豪,要不资助我买个大点的棋盘?')
                  True
            else:
                  break
                                   
      for i in range(6):
            if qp[i][yourchess]==0:
                  qp[i][yourchess]='X'
                  break
      每一列的当前位置[yourchess]+=1
      Type(qp)
      if Winner(qp):
            print('厉害了我的哥')
            break

这是题目

这是题目
回复

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-11-27 10:32:17 | 显示全部楼层
具体出现什么错误呢?
我这台windows电脑上面只有python2.7环境,我看你这个代码需要python3才行,所以暂时没办法帮你测,你直接把错误信息弄出来看看
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
子非鱼  楼主| 发表于 2016-11-27 17:15:46 | 显示全部楼层
嗯嗯,就是判断输赢的函数大概有问题,在下面执行时会无限循环。。。知道错在哪里了,就是不会改~~~
劳拉~~.PNG
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
子非鱼  楼主| 发表于 2016-11-27 17:19:46 | 显示全部楼层
def Winner(qp):
      for i in range(6):
            for j in range(8):
                  if qp[i][j]==0:
                        qp[i][j]=' '
      a=[qp[i][j]==qp[i][j+1]and qp[i][j+1]==qp[i][j+2]and qp[i][j+2]==qp[i][j+3]and qp[i][j+3]==qp[i][j+4] for i in range(6) for j in range(4)]
      b=[qp[i][j]==qp[i+1][j]and qp[i+1][j]==qp[i+2][j]and qp[i+2][j]==qp[i+3][j]and qp[i+3][j]==qp[i+4][j] for i in range(2) for j in range(8)]
      c=[qp[i][j]==qp[i+1][j+1]and qp[i+1][j+1]==qp[i+2][j+2]and qp[i+2][j+2]==qp[i+3][j+3]and qp[i+3][j+3]==qp[i+4][j+4] for i in range(2) for j in range(4)]
      d=[qp[i][j]==qp[i-1][j+1]and qp[i-1][j+1]==qp[i-2][j+2]and qp[i-2][j+2]==qp[i-3][j+3]and qp[i-3][j+3]==qp[i-4][j+4] for i in range(4,6) for j in range(4)]
      if a.count(True)>0:
            return True
      if b.count(True)>0:
            return True
      if c.count(True)>0:
            return True
      if d.count(True)>0:
            return True
      else:
            return False
这是我现在改出来的函数,但好像还是不对。。。
print('劳拉:轮到我了,我把“O”型棋子放在第%d列'%(lurachess+1))
      Type(qp)
      while Winner(qp):
            print('承让了我的弟')
      else:
            break
也有可能下面写错了
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
子非鱼  楼主| 发表于 2016-11-27 17:34:56 | 显示全部楼层
def Winner(qp):
      for i in range(6):
            for j in range(8):
                  if qp[i][j]==0:
                        qp[i][j]=' '
      a=[qp[i][j]==qp[i][j+1]and qp[i][j+1]==qp[i][j+2]and qp[i][j+2]==qp[i][j+3]and qp[i][j+3]==qp[i][j+4] for i in range(6) for j in range(4)]
      b=[qp[i][j]==qp[i+1][j]and qp[i+1][j]==qp[i+2][j]and qp[i+2][j]==qp[i+3][j]and qp[i+3][j]==qp[i+4][j] for i in range(2) for j in range(8)]
      c=[qp[i][j]==qp[i+1][j+1]and qp[i+1][j+1]==qp[i+2][j+2]and qp[i+2][j+2]==qp[i+3][j+3]and qp[i+3][j+3]==qp[i+4][j+4] for i in range(2) for j in range(4)]
      d=[qp[i][j]==qp[i-1][j+1]and qp[i-1][j+1]==qp[i-2][j+2]and qp[i-2][j+2]==qp[i-3][j+3]and qp[i-3][j+3]==qp[i-4][j+4] for i in range(4,6) for j in range(4)]
      if a.count(True)>0:
            return True
      if b.count(True)>0:
            return True
      if c.count(True)>0:
            return True
      if d.count(True)>0:
            return True
      else:
            return False
qp=[
[0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0]
]
Winner(qp)

劳拉~~.PNG
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
子非鱼  楼主| 发表于 2016-11-27 22:24:46 | 显示全部楼层
def Winner(qp):
      for i in range(6):
            for j in range(8):
                  if type(qp[i][j])is str:
                        a=[qp[i][j]==qp[i][j+1]and qp[i][j+1]==qp[i][j+2]and qp[i][j+2]==qp[i][j+3]and qp[i][j+3]==qp[i][j+4] for i in range(6) for j in range(4)]
                        b=[qp[i][j]==qp[i+1][j]and qp[i+1][j]==qp[i+2][j]and qp[i+2][j]==qp[i+3][j]and qp[i+3][j]==qp[i+4][j] for i in range(2) for j in range(8)]
                        c=[qp[i][j]==qp[i+1][j+1]and qp[i+1][j+1]==qp[i+2][j+2]and qp[i+2][j+2]==qp[i+3][j+3]and qp[i+3][j+3]==qp[i+4][j+4] for i in range(2) for j in range(4)]
                        d=[qp[i][j]==qp[i-1][j+1]and qp[i-1][j+1]==qp[i-2][j+2]and qp[i-2][j+2]==qp[i-3][j+3]and qp[i-3][j+3]==qp[i-4][j+4] for i in range(4,6) for j in range(4)]
完全没有办法运行
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
子非鱼  楼主| 发表于 2016-11-27 22:25:50 | 显示全部楼层
比较急啊~~~十一点就要的~
回复 支持 反对

使用道具 举报

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

本版积分规则

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