鱼C论坛

 找回密码
 立即注册
查看: 1919|回复: 9

[已解决]python做作品发生了我自个儿无法解决的事情,求助

[复制链接]
发表于 2022-7-28 15:16:11 | 显示全部楼层 |阅读模式
5鱼币
python做作品发生了我自个儿无法解决的事情,求助
代码如下:
  1. import easygui as g
  2. import random as r
  3. def 井字棋():
  4.     棋 = ['  ','  ','  ','  ','  ','  ','  ','  ','  ']
  5.     #     1(0) 2(1) 3(2) 4(3) 5(4) 6(5) 7(6) 8(7) 9(8) 分别对应九个格子:
  6.     #                                                     ┏━┳━┳━┓
  7.     #                                                   1 ┃1 ┃2 ┃3 ┃
  8.     #                                                     ┣━╋━╋━┫
  9.     #                                                   2 ┃4 ┃5 ┃6 ┃
  10.     #                                                     ┣━╋━╋━┫
  11.     #                                                   3 ┃7 ┃8 ┃9 ┃
  12.     #                                                     ┗━┻━┻━┛
  13.     #                                                       一  二  三
  14.     title = '井字棋'
  15.     次 = 0
  16.     def 井_开始():
  17.         global 人     #每次到这里就会出错,会提示“‘人’不是变量(NameError: name '人' is not defined)”,如果把‘global 人’删掉,就会提示“‘人’变量无法在函数里使用,因为它不是全局变量(UnboundLocalError: local variable '人' referenced before assignment)”,这要怎么改呀?
  18.         choices = ['(一,1)','(二,1)','(三,1)','(一,2)','(二,2)','(三,2)','(一,3)','(二,3)','(三,3)']
  19.         选择 = g.choicebox('请选择┏━┳━┳━┓\n    1 ┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n      ┣━╋━╋━┫\n    2 ┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n      ┣━╋━╋━┫\n    3 ┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n      ┗━┻━┻━┛\n        一  二  三',title + '——' + 人,choices)
  20.         if 选择 == '(一,1)':
  21.             if 棋[0] == '○' or 棋[0] == '×':
  22.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  23.                 井_开始()
  24.             else:
  25.                 棋.insert(0,'○')
  26.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  27.                 if 人 == '1P':
  28.                     人 = '2P'
  29.                 elif 人 == '2P':
  30.                     人 = '1P'
  31.         elif 选择 == '(二,1)':
  32.             if 棋[1] == '○' or 棋[1] == '×':
  33.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  34.                 井_开始()
  35.             else:
  36.                 棋.insert(1,'○')
  37.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  38.                 if 人 == '1P':
  39.                     人 = '2P'
  40.                 elif 人 == '2P':
  41.                     人 = '1P'
  42.         elif 选择 == '(三,1)':
  43.             if 棋[2] == '○' or 棋[2] == '×':
  44.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  45.                 井_开始()
  46.             else:
  47.                 棋.insert(2,'○')
  48.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  49.                 if 人 == '1P':
  50.                     人 = '2P'
  51.                 elif 人 =='2P':
  52.                     人 = '1P'
  53.         elif 选择 == '(一,2)':
  54.             if 棋[3] == '○' or 棋[3] == '×':
  55.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  56.                 井_开始()
  57.             else:
  58.                 棋.insert(3,'○')
  59.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  60.                 if 人 == '1P':
  61.                     人 = '2P'
  62.                 elif 人 == '2P':
  63.                     人 = '1P'
  64.         elif 选择 == '(二,2)':
  65.             if 棋[4] == '○' or 棋[4] == '×':
  66.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  67.                 井_开始()
  68.             else:
  69.                 棋.insert(4,'○')
  70.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  71.                 if 人 == '1P':
  72.                     人 = '2P'
  73.                 elif 人 == '2P':
  74.                     人 = '1P'
  75.         elif 选择 == '(三,2)':
  76.             if 棋[5] == '○' or 棋[5] == '×':
  77.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  78.                 井_开始()
  79.             else:
  80.                 棋.insert(5,'○')
  81.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  82.                 if 人 == '1P':
  83.                     人 = '2P'
  84.                 elif 人 == '2P':
  85.                     人 = '1P'
  86.         elif 选择 == '(一,3)':
  87.             if 棋[6] == '○' or 棋[6] == '×':
  88.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  89.                 井_开始()
  90.             else:
  91.                 棋.insert(6,'○')
  92.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  93.                 if 人 == '1P':
  94.                     人 = '2P'
  95.                 elif 人 == '2P':
  96.                     人 = '1P'
  97.         elif 选择 == '(二,3)':
  98.             if 棋[7] == '○' or 棋[7] == '×':
  99.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  100.                 井_开始()
  101.             else:
  102.                 棋.insert(7,'○')
  103.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  104.                 if 人 == '1P':
  105.                     人 = '2P'
  106.                 elif 人 == '2P':
  107.                     人 = '1P'
  108.         elif 选择 == '(三,3)':
  109.             if 棋[8] == '○' or 棋[8] == '×':
  110.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  111.                 井_开始()
  112.             else:
  113.                 棋.insert(8,'○')
  114.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  115.                 if 人 == '1P':
  116.                     人 = '2P'
  117.                 elif 人 == '2P':
  118.                     人 = '1P'

  119.     g.msgbox('抽取先后手',title,'好的')
  120.     先后 = r.randint(1,2)
  121.     if 先后 == 1:
  122.         g.msgbox('1P先手(○),2P后手(×)',title,'好的')
  123.         g.msgbox('准备开始井字棋',title,'开始')
  124.         先 = '1P'
  125.         后 = '2P'
  126.         次 = 0
  127.         
  128.         井_开始()
  129.     elif 先后 == 2:
  130.         g.msgbox('2P先手(○),1P后手(×)',title,'好的')
  131.         g.msgbox('准备开始井字棋',title,'开始')
  132.         先 = '2P'
  133.         后 = '1P'
  134.         次 = 0
  135.         井_开始()



  136. 井字棋()
  137. #剩下的还没做完,如果各位大佬在上面的代码中发现其它bug,或者有更好的建议,请帮我指出来,谢谢。
复制代码
最佳答案
2022-7-28 15:16:12
变量得先定义后使用,global的作用是讲全局作用域中的变量扩展到局部,我看你全局中并没有定义人这个变量,当然会报错,我看你这个是个内嵌函数,如果内嵌函数想要使用局部作用域中的变量,不能使用global,应该用nonlocal

最佳答案

查看完整内容

变量得先定义后使用,global的作用是讲全局作用域中的变量扩展到局部,我看你全局中并没有定义人这个变量,当然会报错,我看你这个是个内嵌函数,如果内嵌函数想要使用局部作用域中的变量,不能使用global,应该用nonlocal
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-28 15:16:12 | 显示全部楼层    本楼为最佳答案   
变量得先定义后使用,global的作用是讲全局作用域中的变量扩展到局部,我看你全局中并没有定义人这个变量,当然会报错,我看你这个是个内嵌函数,如果内嵌函数想要使用局部作用域中的变量,不能使用global,应该用nonlocal
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-28 15:25:27 | 显示全部楼层
ZhKQYu 发表于 2022-7-28 15:24
变量得先定义后使用,global的作用是讲全局作用域中的变量扩展到局部,我看你全局中并没有定义人这个变量, ...

至于修改方法,你得在全局作用域中定义一个人这个变量才能使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-28 15:30:58 | 显示全部楼层
ZhKQYu 发表于 2022-7-28 15:25
至于修改方法,你得在全局作用域中定义一个人这个变量才能使用

是要这样吗:
  1. import easygui as g
  2. import random as r
  3. 人 = 0
  4. def 井字棋():
  5.     棋 = ['  ','  ','  ','  ','  ','  ','  ','  ','  ']
  6.     #     1(0) 2(1) 3(2) 4(3) 5(4) 6(5) 7(6) 8(7) 9(8) 分别对应九个格子:
  7.     #                                                     ┏━┳━┳━┓
  8.     #                                                   1 ┃1 ┃2 ┃3 ┃
  9.     #                                                     ┣━╋━╋━┫
  10.     #                                                   2 ┃4 ┃5 ┃6 ┃
  11.     #                                                     ┣━╋━╋━┫
  12.     #                                                   3 ┃7 ┃8 ┃9 ┃
  13.     #                                                     ┗━┻━┻━┛
  14.     #                                                       一  二  三
  15.     title = '井字棋'
  16.     次 = 0
  17.    
  18.     def 井_开始():
  19.         global 人     #每次到这里就会出错,会提示“‘人’不是变量(NameError: name '人' is not defined)”,如果把‘global 人’删掉,就会提示“‘人’变量无法在函数里使用,因为它不是全局变量(UnboundLocalError: local variable '人' referenced before assignment)”,这要怎么改呀?
  20.         choices = ['(一,1)','(二,1)','(三,1)','(一,2)','(二,2)','(三,2)','(一,3)','(二,3)','(三,3)']
  21.         选择 = g.choicebox('请选择┏━┳━┳━┓\n    1 ┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n      ┣━╋━╋━┫\n    2 ┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n      ┣━╋━╋━┫\n    3 ┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n      ┗━┻━┻━┛\n        一  二  三',title + '——' + 人,choices)
  22.         if 选择 == '(一,1)':
  23.             if 棋[0] == '○' or 棋[0] == '×':
  24.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  25.                 井_开始()
  26.             else:
  27.                 棋.insert(0,'○')
  28.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  29.                 if 人 == '1P':
  30.                     人 = '2P'
  31.                 elif 人 == '2P':
  32.                     人 = '1P'
  33.         elif 选择 == '(二,1)':
  34.             if 棋[1] == '○' or 棋[1] == '×':
  35.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  36.                 井_开始()
  37.             else:
  38.                 棋.insert(1,'○')
  39.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  40.                 if 人 == '1P':
  41.                     人 = '2P'
  42.                 elif 人 == '2P':
  43.                     人 = '1P'
  44.         elif 选择 == '(三,1)':
  45.             if 棋[2] == '○' or 棋[2] == '×':
  46.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  47.                 井_开始()
  48.             else:
  49.                 棋.insert(2,'○')
  50.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  51.                 if 人 == '1P':
  52.                     人 = '2P'
  53.                 elif 人 =='2P':
  54.                     人 = '1P'
  55.         elif 选择 == '(一,2)':
  56.             if 棋[3] == '○' or 棋[3] == '×':
  57.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  58.                 井_开始()
  59.             else:
  60.                 棋.insert(3,'○')
  61.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  62.                 if 人 == '1P':
  63.                     人 = '2P'
  64.                 elif 人 == '2P':
  65.                     人 = '1P'
  66.         elif 选择 == '(二,2)':
  67.             if 棋[4] == '○' or 棋[4] == '×':
  68.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  69.                 井_开始()
  70.             else:
  71.                 棋.insert(4,'○')
  72.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  73.                 if 人 == '1P':
  74.                     人 = '2P'
  75.                 elif 人 == '2P':
  76.                     人 = '1P'
  77.         elif 选择 == '(三,2)':
  78.             if 棋[5] == '○' or 棋[5] == '×':
  79.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  80.                 井_开始()
  81.             else:
  82.                 棋.insert(5,'○')
  83.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  84.                 if 人 == '1P':
  85.                     人 = '2P'
  86.                 elif 人 == '2P':
  87.                     人 = '1P'
  88.         elif 选择 == '(一,3)':
  89.             if 棋[6] == '○' or 棋[6] == '×':
  90.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  91.                 井_开始()
  92.             else:
  93.                 棋.insert(6,'○')
  94.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  95.                 if 人 == '1P':
  96.                     人 = '2P'
  97.                 elif 人 == '2P':
  98.                     人 = '1P'
  99.         elif 选择 == '(二,3)':
  100.             if 棋[7] == '○' or 棋[7] == '×':
  101.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  102.                 井_开始()
  103.             else:
  104.                 棋.insert(7,'○')
  105.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  106.                 if 人 == '1P':
  107.                     人 = '2P'
  108.                 elif 人 == '2P':
  109.                     人 = '1P'
  110.         elif 选择 == '(三,3)':
  111.             if 棋[8] == '○' or 棋[8] == '×':
  112.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  113.                 井_开始()
  114.             else:
  115.                 棋.insert(8,'○')
  116.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  117.                 if 人 == '1P':
  118.                     人 = '2P'
  119.                 elif 人 == '2P':
  120.                     人 = '1P'

  121.     g.msgbox('抽取先后手',title,'好的')
  122.     先后 = r.randint(1,2)
  123.     if 先后 == 1:
  124.         g.msgbox('1P先手(○),2P后手(×)',title,'好的')
  125.         g.msgbox('准备开始井字棋',title,'开始')
  126.         先 = '1P'
  127.         后 = '2P'
  128.         次 = 0
  129.         
  130.         井_开始()
  131.     elif 先后 == 2:
  132.         g.msgbox('2P先手(○),1P后手(×)',title,'好的')
  133.         g.msgbox('准备开始井字棋',title,'开始')
  134.         先 = '2P'
  135.         后 = '1P'
  136.         次 = 0
  137.         井_开始()



  138. 井字棋()
  139. #剩下的还没做完,如果各位大佬在上面的代码中发现其它bug,或者有更好的建议,请帮我指出来,谢谢。
复制代码

然后把其它变量都搞到函数外同一定义就行了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-28 15:33:03 | 显示全部楼层
wqiori 发表于 2022-7-28 15:30
是要这样吗:

然后把其它变量都搞到函数外同一定义就行了吗

是的  可以这么搞  但是定义成全局变量还是比较危险的   万一哪里没注意修改了一下  可能导致程序报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-28 15:33:48 | 显示全部楼层
wqiori 发表于 2022-7-28 15:30
是要这样吗:

然后把其它变量都搞到函数外同一定义就行了吗

还有就是变量名定义为汉字可能也不太好,虽然不会报错,但是还是看着有点那啥,哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-28 15:37:31 | 显示全部楼层
好的,已经修改好了。Thank you very much!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-28 15:39:37 | 显示全部楼层
定义为汉字主要是因为我记不住英文,我才小学(^ v ^)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-28 15:48:19 | 显示全部楼层
wqiori 发表于 2022-7-28 15:39
定义为汉字主要是因为我记不住英文,我才小学(^ v ^)

牛,未来可期
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-7 18:43:27 | 显示全部楼层
完成啦~
  1. import easygui as g
  2. import random as r
  3. 人 = 'P'
  4. 人_胜负 = 'P'
  5. 次 = 0
  6. 先 = 'P'
  7. 后 = 'P'
  8. 内容 = ''
  9. title = '井字棋'
  10. def 井字棋():
  11.     global 人
  12.     global 内容
  13.     global title
  14.     棋 = ['  ','  ','  ','  ','  ','  ','  ','  ','  ']
  15.     #     1(0) 2(1) 3(2) 4(3) 5(4) 6(5) 7(6) 8(7) 9(8) 分别对应九个格子:
  16.     #                                                     ┏ ━ ┳ ━ ┳ ━ ┓
  17.     #                                                   3 ┃1(0)┃2(1)┃3(2)┃
  18.     #                                                     ┣ ━ ╋ ━ ╋ ━ ┫
  19.     #                                                   2 ┃4(3)┃5(4)┃6(5)┃
  20.     #                                                     ┣ ━ ╋ ━ ╋ ━ ┫
  21.     #                                                   1 ┃7(6)┃8(7)┃9(8)┃
  22.     #                                                     ┗ ━ ┻ ━ ┻ ━ ┛
  23.     #                                                       一    二    三

  24.    
  25.     def 井_开始():
  26.         def 井_检测():
  27.             global 次
  28.             global 人
  29.             global title
  30.             if 棋[0] == 棋[1] == 棋[2] == '○':
  31.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  32.                 exit()
  33.             elif 棋[0] == 棋[1] == 棋[2] == '×':
  34.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  35.                 exit()
  36.             elif 棋[0] == 棋[3] == 棋[6] == '○':
  37.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  38.                 exit()
  39.             elif 棋[0] == 棋[3] == 棋[6] == '×':
  40.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  41.                 exit()
  42.             elif 棋[0] == 棋[4] == 棋[8] == '○':
  43.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  44.                 exit()
  45.             elif 棋[0] == 棋[4] == 棋[8] == '×':
  46.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  47.                 exit()
  48.             elif 棋[1] == 棋[4] == 棋[7] == '○':
  49.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  50.                 exit()
  51.             elif 棋[1] == 棋[4] == 棋[7] == '×':
  52.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  53.                 exit()
  54.             elif 棋[2] == 棋[5] == 棋[8] == '○':
  55.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  56.                 exit()
  57.             elif 棋[2] == 棋[5] == 棋[8] == '×':
  58.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  59.                 exit()
  60.             elif 棋[2] == 棋[4] == 棋[6] == '○':
  61.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  62.                 exit()
  63.             elif 棋[2] == 棋[4] == 棋[6] == '×':
  64.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  65.                 exit()
  66.             elif 棋[3] == 棋[4] == 棋[5] == '○':
  67.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  68.                 exit()
  69.             elif 棋[3] == 棋[4] == 棋[5] == '×':
  70.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  71.                 exit()
  72.             elif 棋[6] == 棋[7] == 棋[8] == '○':
  73.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  74.                 exit()
  75.             elif 棋[6] == 棋[7] == 棋[8] == '×':
  76.                 g.msgbox(人_胜负 + '赢了',title,'好的')
  77.                 exit()
  78.             elif 次 == 9:
  79.                 g.msgbox('平局',title,'好的')
  80.                 exit()
  81.             else:
  82.                 pass
  83.                
  84.         global 人
  85.         global 人_胜负
  86.         global 次
  87.         global 先
  88.         global 后
  89.         global 内容
  90.         global title
  91.         井_检测()
  92.         choices = ['左上(一,3)','上   (二,3)','右上(三,3)','左   (一,2)','中   (二,2)','右   (三,2)','左下(一,1)','下   (二,1)','右下(三,1)']
  93.         选择 = g.choicebox('请选择┏━┳━┳━┓\n    3 ┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n      ┣━╋━╋━┫\n    2 ┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n      ┣━╋━╋━┫\n    1 ┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n      ┗━┻━┻━┛\n        一  二  三',title + '——' + 人,choices)
  94.         if 选择 == '左上(一,3)':
  95.             if 棋[0] == '○' or 棋[0] == '×':
  96.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  97.                 井_开始()
  98.             else:
  99.                 del 棋[0]
  100.                 棋.insert(0,内容)
  101.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  102.                 次 += 1
  103.                 if 人 == '1P':
  104.                     人 = '2P'
  105.                     人_胜负 = '1P'
  106.                     if 内容 == '○':
  107.                         内容 = '×'
  108.                         井_开始()
  109.                     elif 内容 == '×':
  110.                         内容 = '○'
  111.                         井_开始()
  112.                 elif 人 == '2P':
  113.                     人 = '1P'
  114.                     人_胜负 = '2P'
  115.                     if 内容 == '○':
  116.                         内容 = '×'
  117.                         井_开始()
  118.                     elif 内容 == '×':
  119.                         内容 = '○'
  120.                         井_开始()
  121.         elif 选择 == '上   (二,3)':
  122.             if 棋[1] == '○' or 棋[1] == '×':
  123.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  124.                 井_开始()
  125.             else:
  126.                 del 棋[1]
  127.                 棋.insert(1,内容)
  128.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  129.                 次 += 1
  130.                 if 人 == '1P':
  131.                     人 = '2P'
  132.                     人_胜负 = '1P'
  133.                     if 内容 == '○':
  134.                         内容 = '×'
  135.                         井_开始()
  136.                     elif 内容 == '×':
  137.                         内容 = '○'
  138.                         井_开始()
  139.                 elif 人 == '2P':
  140.                     人 = '1P'
  141.                     人_胜负 = '2P'
  142.                     if 内容 == '○':
  143.                         内容 = '×'
  144.                         井_开始()
  145.                     elif 内容 == '×':
  146.                         内容 = '○'
  147.                         井_开始()
  148.         elif 选择 == '右上(三,3)':
  149.             if 棋[2] == '○' or 棋[2] == '×':
  150.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  151.                 井_开始()
  152.             else:
  153.                 del 棋[2]
  154.                 棋.insert(2,内容)
  155.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  156.                 次 += 1
  157.                 if 人 == '1P':
  158.                     人 = '2P'
  159.                     人_胜负 = '1P'
  160.                     if 内容 == '○':
  161.                         内容 = '×'
  162.                         井_开始()
  163.                     elif 内容 == '×':
  164.                         内容 = '○'
  165.                         井_开始()
  166.                 elif 人 == '2P':
  167.                     人 = '1P'
  168.                     人_胜负 = '2P'
  169.                     if 内容 == '○':
  170.                         内容 = '×'
  171.                         井_开始()
  172.                     elif 内容 == '×':
  173.                         内容 = '○'
  174.                         井_开始()
  175.         elif 选择 == '左   (一,2)':
  176.             if 棋[3] == '○' or 棋[3] == '×':
  177.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  178.                 井_开始()
  179.             else:
  180.                 del 棋[3]
  181.                 棋.insert(3,内容)
  182.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  183.                 次 += 1
  184.                 if 人 == '1P':
  185.                     人 = '2P'
  186.                     人_胜负 = '1P'
  187.                     if 内容 == '○':
  188.                         内容 = '×'
  189.                         井_开始()
  190.                     elif 内容 == '×':
  191.                         内容 = '○'
  192.                         井_开始()
  193.                 elif 人 == '2P':
  194.                     人 = '1P'
  195.                     人_胜负 = '2P'
  196.                     if 内容 == '○':
  197.                         内容 = '×'
  198.                         井_开始()
  199.                     elif 内容 == '×':
  200.                         内容 = '○'
  201.                         井_开始()
  202.         elif 选择 == '中   (二,2)':
  203.             if 棋[4] == '○' or 棋[4] == '×':
  204.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  205.                 井_开始()
  206.             else:
  207.                 del 棋[4]
  208.                 棋.insert(4,内容)
  209.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  210.                 次 += 1
  211.                 if 人 == '1P':
  212.                     人 = '2P'
  213.                     人_胜负 = '1P'
  214.                     if 内容 == '○':
  215.                         内容 = '×'
  216.                         井_开始()
  217.                     elif 内容 == '×':
  218.                         内容 = '○'
  219.                         井_开始()
  220.                 elif 人 == '2P':
  221.                     人 = '1P'
  222.                     人_胜负 = '2P'
  223.                     if 内容 == '○':
  224.                         内容 = '×'
  225.                         井_开始()
  226.                     elif 内容 == '×':
  227.                         内容 = '○'
  228.                         井_开始()
  229.         elif 选择 == '右   (三,2)':
  230.             if 棋[5] == '○' or 棋[5] == '×':
  231.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  232.                 井_开始()
  233.             else:
  234.                 del 棋[5]
  235.                 棋.insert(5,内容)
  236.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  237.                 次 += 1
  238.                 if 人 == '1P':
  239.                     人 = '2P'
  240.                     人_胜负 = '1P'
  241.                     if 内容 == '○':
  242.                         内容 = '×'
  243.                         井_开始()
  244.                     elif 内容 == '×':
  245.                         内容 = '○'
  246.                         井_开始()
  247.                 elif 人 == '2P':
  248.                     人 = '1P'
  249.                     人_胜负 = '2P'
  250.                     if 内容 == '○':
  251.                         内容 = '×'
  252.                         井_开始()
  253.                     elif 内容 == '×':
  254.                         内容 = '○'
  255.                         井_开始()
  256.         elif 选择 == '左下(一,1)':
  257.             if 棋[6] == '○' or 棋[6] == '×':
  258.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  259.                 井_开始()
  260.             else:
  261.                 del 棋[6]
  262.                 棋.insert(6,内容)
  263.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  264.                 次 += 1
  265.                 if 人 == '1P':
  266.                     人 = '2P'
  267.                     人_胜负 = '1P'
  268.                     if 内容 == '○':
  269.                         内容 = '×'
  270.                         井_开始()
  271.                     elif 内容 == '×':
  272.                         内容 = '○'
  273.                         井_开始()
  274.                 elif 人 == '2P':
  275.                     人 = '1P'
  276.                     人_胜负 = '2P'
  277.                     if 内容 == '○':
  278.                         内容 = '×'
  279.                         井_开始()
  280.                     elif 内容 == '×':
  281.                         内容 = '○'
  282.                         井_开始()
  283.         elif 选择 == '下   (二,1)':
  284.             if 棋[7] == '○' or 棋[7] == '×':
  285.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  286.                 井_开始()
  287.             else:
  288.                 del 棋[7]
  289.                 棋.insert(7,内容)
  290.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  291.                 次 += 1
  292.                 if 人 == '1P':
  293.                     人 = '2P'
  294.                     人_胜负 = '1P'
  295.                     if 内容 == '○':
  296.                         内容 = '×'
  297.                         井_开始()
  298.                     elif 内容 == '×':
  299.                         内容 = '○'
  300.                         井_开始()
  301.                 elif 人 == '2P':
  302.                     人 = '1P'
  303.                     人_胜负 = '2P'
  304.                     if 内容 == '○':
  305.                         内容 = '×'
  306.                         井_开始()
  307.                     elif 内容 == '×':
  308.                         内容 = '○'
  309.                         井_开始()
  310.         elif 选择 == '右下(三,1)':
  311.             if 棋[8] == '○' or 棋[8] == '×':
  312.                 g.msgbox('这个位置已经被占用了哦',title,'好的')
  313.                 井_开始()
  314.             else:
  315.                 del 棋[8]
  316.                 棋.insert(8,内容)
  317.                 g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
  318.                 次 += 1
  319.                 if 人 == '1P':
  320.                     人 = '2P'
  321.                     人_胜负 = '1P'
  322.                     if 内容 == '○':
  323.                         内容 = '×'
  324.                         井_开始()
  325.                     elif 内容 == '×':
  326.                         内容 = '○'
  327.                         井_开始()
  328.                 elif 人 == '2P':
  329.                     人 = '1P'
  330.                     人_胜负 = '2P'
  331.                     if 内容 == '○':
  332.                         内容 = '×'
  333.                         井_开始()
  334.                     elif 内容 == '×':
  335.                         内容 = '○'
  336.                         井_开始()

  337.     g.msgbox('抽取先后手',title,'好的')
  338.     先后 = r.randint(1,2)
  339.     if 先后 == 1:
  340.         g.msgbox('1P先手(○),2P后手(×)',title,'好的')
  341.         g.msgbox('准备开始井字棋',title,'开始')
  342.         先 = '1P'
  343.         后 = '2P'
  344.         人 = '1P'
  345.         内容 = '○'
  346.         次 = 0
  347.         井_开始()
  348.     elif 先后 == 2:
  349.         g.msgbox('2P先手(○),1P后手(×)',title,'好的')
  350.         g.msgbox('准备开始井字棋',title,'开始')
  351.         先 = '2P'
  352.         后 = '1P'
  353.         人 = '2P'
  354.         内容 = '○'
  355.         次 = 0
  356.         井_开始()



  357. 井字棋()

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-1 19:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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