免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6268 | 回复: 12
打印 上一主题 下一主题

求助,python的作业 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-02 15:49 |只看该作者 |倒序浏览
小弟刚开始学语言,听别人介绍,选择了python.哪知道第二个作业就做不出来了,请大家帮我点一下,给个思路。

作业题目

[ 本帖最后由 wolfg 于 2006-3-3 10:40 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-03-02 16:40 |只看该作者
什么作业啊?你的题目没说出来啊!

论坛徽章:
0
3 [报告]
发表于 2006-03-02 22:42 |只看该作者
点楼主帖子里的“作业题目”就是了,也就是这个链接:
http://www.cs.sfu.ca/CC/120/ted/120-06-1/Assign2.html

论坛徽章:
0
4 [报告]
发表于 2006-03-03 09:39 |只看该作者
我也刚学python,给点建议
class screen:
>>>def init():
>>>def get_input()
>>>def reflush(input_number):
>>>def is_win()

呵呵,今天有空的话我也写写看,不知道这么想行不行

论坛徽章:
0
5 [报告]
发表于 2006-03-03 10:34 |只看该作者
原帖由 cutelee 于 2006-3-2 22:42 发表
点楼主帖子里的“作业题目”就是了,也就是这个链接:
http://www.cs.sfu.ca/CC/120/ted/120-06-1/Assign2.html


太隐蔽了,呵呵

论坛徽章:
0
6 [报告]
发表于 2006-03-03 20:56 |只看该作者
诶,终于大致写了个,周末去没出去。没完全按作业要求,也没仔细测试过,貌似大致可以了。python中的string处理真麻烦。弄了我好多时间,偶是新手,代码不好看,见笑了:
不过有个问题没解决,就是重复输入,,

  1. #! /usr/bin/python
  2.       2 #! file:game.py
  3.       3 #! author:BigApple
  4.       4
  5.       5
  6.       6 import string
  7.       7 import os,sys
  8.       8
  9.       9 class Screen:
  10.      10 #declare the member variable
  11.      11         win_fg  = -1 # -1 stand for tie, and 0 - O win, 1 - X win
  12.      12         play_fg = 'X' # X or O
  13.      13         range = ['0|1|2  | | ',
  14.      14                  '- - - - - -',
  15.      15                  '3|4|5  | | ',
  16.      16                  '- - - - - -',
  17.      17                  '6|7|8  | | ']
  18.      18 #declare the member function
  19.      19         def init(self):
  20.      20                 os.system("clear")
  21.      21                 print 'TIC TAC TOE:\n'
  22.      22                 for x in self.range:
  23.      23                         print str(x)
  24.      24
  25.      25
  26.      26         def get_input(self):
  27.      27                 input_num = raw_input("Player %s, choose there to place your mark (0-8):"%self.play_fg)
  28.      28                 while (input_num not in ['0','1','2','3','4','5','6','7','8']):
  29.      29                         print 'Invalid selection. Enter an integer from 0 to 8.\n'
  30.      30                         input_num = raw_input("Player %s, choose there to place your mark (0-8):"%self.play_        fg)
  31.      31                 return(input_num)
  32.      32
  33.      33
  34.      34
  35.      35         def reflush_scr(self,input_num,flag):
  36.      36                 if   (input_num == '0'):
  37.      37                         new = self.range[0][0:6]+flag+self.range[0][7:]
  38.      38                         del self.range[0]
  39.      39                         self.range.insert(0,new)
  40.      40                 elif (input_num == '1'):
  41.      41                         new = self.range[0][0:8]+flag+self.range[0][9:]
  42.      42                         del self.range[0]
  43.      43                         self.range.insert(0,new)
  44.      44                 elif (input_num == '2'):
  45. 45                         new = self.range[0][0:10]+flag
  46.      46                         del self.range[0]
  47.      47                         self.range.insert(0,new)
  48.      48                 elif (input_num == '3'):
  49.      49                         new = self.range[2][0:6]+flag+self.range[2][7:]
  50.      50                         del self.range[2]
  51.      51                         self.range.insert(2,new)
  52.      52                 elif (input_num == '4'):
  53.      53                         new = self.range[2][0:8]+flag+self.range[2][9:]
  54.      54                         del self.range[2]
  55.      55                         self.range.insert(2,new)
  56.      56                 elif (input_num == '5'):
  57.      57                         new = self.range[2][0:10]+flag
  58.      58                         del self.range[2]
  59.      59                         self.range.insert(2,new)
  60.      60                 elif (input_num == '6'):
  61.      61                         new = self.range[4][0:6]+flag+self.range[4][7:]
  62.      62                         del self.range[4]
  63.      63                         self.range.insert(4,new)
  64.      64                 elif (input_num == '7'):
  65.      65                         new = self.range[4][0:8]+flag+self.range[4][9:]
  66.      66                         del self.range[4]
  67.      67                         self.range.insert(4,new)
  68.      68                 elif (input_num == '8'):
  69.      69                         new = self.range[4][0:10]+flag
  70.      70                         del self.range[4]
  71.      71                         self.range.insert(4,new)
  72.      72
  73.      73                 if (self.play_fg == 'X'):
  74.      74                         self.play_fg = 'O'
  75.      75                 else:
  76.      76                         self.play_fg = 'X'
  77.      77                 #os.system("clear")
  78.      78                 for x in self.range:
  79.      79                         print str(x)
  80.      80
  81.      81         def is_win(self):
  82.      82                 if ( self.range[0][6] == self.range[0][8] == self.range[0][10] == 'O' or
  83.      83                      self.range[2][6] == self.range[2][8] == self.range[2][10] == 'O' or
  84.      84                      self.range[4][6] == self.range[4][8] == self.range[4][10] == 'O' or
  85.      85                      self.range[0][6] == self.range[2][6] == self.range[4][6]  == 'O' or
  86.      86                      self.range[0][8] == self.range[2][8] == self.range[4][8]  == 'O' or
  87.      87                      self.range[0][10] == self.range[2][10] == self.range[4][10] == 'O' or
  88.      88                      self.range[0][6] == self.range[2][8] == self.range[4][10] == 'O' or
  89.      89                      self.range[0][10] == self.range[2][8] == self.range[4][6] == 'O'):
  90.                          self.win_fg = 0
  91.      91                 elif( self.range[0][6] == self.range[0][8] == self.range[0][10] == 'X' or
  92.      92                      self.range[2][6] == self.range[2][8] == self.range[2][10] ==  'X' or
  93.      93                      self.range[4][6] == self.range[4][8] == self.range[4][10] ==  'X' or
  94.      94                      self.range[0][6] == self.range[2][6] == self.range[4][6]  ==  'X' or
  95.      95                      self.range[0][8] == self.range[2][8] == self.range[4][8]  ==  'X' or
  96.      96                      self.range[0][10] == self.range[2][10] == self.range[4][10] == 'X' or
  97.      97                      self.range[0][6] == self.range[2][8] == self.range[4][10] ==  'X' or
  98.      98                      self.range[0][10] == self.range[2][8] == self.range[4][6] ==  'X'):
  99.      99                         self.win_fg = 1
  100.     100
  101.     101                 print ' '
  102.     102                 #1 - x win,2 - o win,0 - no win, -1 continue
  103.     103         def output_reslut(result_fg):
  104.     104                 print ''
  105.     105
  106.     106
  107.     107
  108.     108 def main():
  109.     109         scr = Screen()
  110.     110         scr.init()
  111.     111
  112.     112         while(1):
  113.     113                 scr.reflush_scr(scr.get_input(),scr.play_fg)
  114.     114                 scr.is_win()
  115.     115                 if ( scr.win_fg == 0 ):
  116.     116                         raw_input("Player O wins,press any key to continue...")
  117.     117                         sys.exit()
  118.     118                 elif (scr.win_fg == 1 ):
  119.     119                         raw_input("Player X wins,press any key to continue...")
  120.     120                         sys.exit()
  121.     121
  122.     122
  123.     123
  124.     124 main()

复制代码

[ 本帖最后由 bigapple2008 于 2006-3-3 21:14 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-03-04 00:15 |只看该作者
偶的。参照了lz给的作业说明,没有用到类。
仔细看来那个作业说明,说得已经比较详细了。

  1. #! /usr/bin/env python
  2. # tictactoe.py

  3. def init(marks):
  4.     for i in range(9):
  5.         marks.append(' ')

  6. def drawBoard(marks):
  7.     """ Output the board represented by marks. """
  8.     sepRows = ['- - -\t- - -', '- - -\t- - -', '']
  9.     print
  10.     for i in range(3):
  11.         numbers = []
  12.         currBoard = []
  13.         for k, m in enumerate(marks[3*i:3*i+3]):
  14.             numbers.append(3*i+k)
  15.             currBoard.append(m)
  16.         row = numbers + currBoard
  17.         print '%s|%s|%s\t%s|%s|%s' % tuple(row)
  18.         print sepRows[i]

  19. def setPosition(pos, mark, marks):
  20.     marks[pos] = mark
  21.     return marks

  22. def playerTurn(player, marks):
  23.     while (True):
  24.         pos = raw_input('Player %s, choose where to place your mark (0-8): ' % player)
  25.         if int(pos) not in range(9):
  26.             print 'Invalid selection. Enter an integer from 0 to 8.'
  27.         elif marks[int(pos)] != ' ':
  28.             print 'Invalid selection. You may only choose an unoccupied position.'
  29.         else:
  30.             break
  31.     return setPosition(int(pos), player, marks)

  32. def singleWinCheck(marks, p1, p2, p3):
  33.     """
  34.     Check if the same symbol occurs at all three positions.
  35.     """
  36.     return marks[p1] == marks[p2] == marks[p3]
  37.    
  38. def winCheck(marks):
  39.     win = [ [0, 1, 2],
  40.             [3, 4, 5],
  41.             [6, 7, 8],
  42.             [0, 3, 6],
  43.             [1, 4, 7],
  44.             [2, 5, 8],
  45.             [0, 4, 8],
  46.             [2, 4, 6],]
  47.     for p1, p2, p3 in win:
  48.         if singleWinCheck(marks, p1, p2, p3):
  49.             if marks[p1] == ' ' or marks[p2] == ' ' or marks[p3] == ' ':
  50.                 continue
  51.             print '\n----------------'
  52.             print '%s is the winner!' % marks[p1]
  53.             print '----------------\n'
  54.             return True
  55.     return False

  56. def allFull(marks):
  57.     return ' ' not in marks

  58. def main():
  59.     marks = []
  60.     players = ['X', 'O']
  61.     init(marks)
  62.     drawBoard(marks)
  63.     gameOver = False
  64.     while (not gameOver):
  65.         for p in players:
  66.             marks = playerTurn(p, marks)            
  67.             if winCheck(marks):
  68.                 gameOver = True
  69.                 break
  70.             elif allFull(marks):
  71.                 print "\nIt's a cat's game!"
  72.                 gameOver = True
  73.                 break
  74.             else:
  75.                 drawBoard(marks)
  76.     drawBoard(marks)

  77. if __name__ == '__main__':
  78.     main()
复制代码

[ 本帖最后由 wolfg 于 2006-3-4 00:20 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-03-04 00:24 |只看该作者
和斑竹比,偶的惭愧啊,不过还好偶是新手,还说得过去,呵呵
想顺便请教几个问题

  1. sepRows = ['- - -\t- - -', '- - -\t- - -', '']
  2.     print
  3.     for i in range(3):
  4.         numbers = []
复制代码

这里的print后面什么都没有,就换行了,什么意思啊?

  1. if __name__ == '__main__':
  2.     main()
复制代码

这么写是不是惯例呢?为了保证些什么?

一般python的工程是怎么来组织代码的结果的呢,比如C的话,可以分include啊,lib啊好几个文件夹,放不同的东西。python里呢?本来想去sf.net上找些工程来看的,但发现登陆不了,而且上次看过的代码都带GUI的。刚开始看不合适,

斑竹给点建议啊,

论坛徽章:
0
9 [报告]
发表于 2006-03-04 01:42 |只看该作者

真的谢谢大家了

很有启发,多谢大家

论坛徽章:
0
10 [报告]
发表于 2006-03-06 10:40 |只看该作者
抱歉,这么晚才回帖。

这里的print后面什么都没有,就换行了,什么意思啊?

这里我是想输出一个空行。换个写法也许好一些。


  1. if __name__ == '__main__':
  2.     main()
复制代码

这么写是不是惯例呢?为了保证些什么?

是的。这样做是为了保证你的模块可以即做为单独可以执行的程序也可以做为module被import
每个module都有__name__,这个内置的属性,module做为程序执行时,__name__的值是__main__,
而module被import时,__name__的值就是模块的名字。所以判断__name__的值就可以得知module是做为单独的程序来执行还是做为module被import的。我解释的不好,你可以参考Learning Python的5.6一节。

一般python的工程是怎么来组织代码的结果的呢,比如C的话,可以分include啊,lib啊好几个文件夹,放不同的东西。python里呢?本来想去sf.net上找些工程来看的,但发现登陆不了,而且上次看过的代码都带GUI的。

Python程序的单元是module,module也可按package组织。你看一下Learning Python的第五章和Python文档里Python Tutorial的第6章吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP