求助,python的作业

求助,python的作业

小弟刚开始学语言,听别人介绍,选择了python.哪知道第二个作业就做不出来了,请大家帮我点一下,给个思路。

作业题目

什么作业啊?你的题目没说出来啊!
点楼主帖子里的“作业题目”就是了,也就是这个链接:
http://www.cs.sfu.ca/CC/120/ted/120-06-1/Assign2.html
我也刚学python,给点建议
class screen:
>>>def init():
>>>def get_input()
>>>def reflush(input_number):
>>>def is_win()

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


QUOTE:
原帖由 cutelee 于 2006-3-2 22:42 发表
点楼主帖子里的“作业题目”就是了,也就是这个链接:
http://www.cs.sfu.ca/CC/120/ted/120-06-1/Assign2.html

太隐蔽了,呵呵
诶,终于大致写了个,周末去没出去。没完全按作业要求,也没仔细测试过,貌似大致可以了。python中的string处理真麻烦。弄了我好多时间,偶是新手,代码不好看,见笑了:
不过有个问题没解决,就是重复输入,,

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

偶的。参照了lz给的作业说明,没有用到类。
仔细看来那个作业说明,说得已经比较详细了。

[Copy to clipboard] [ - ]
CODE:
#! /usr/bin/env python
# tictactoe.py

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

def drawBoard(marks):
    """ Output the board represented by marks. """
    sepRows = ['- - -\t- - -', '- - -\t- - -', '']
    print
    for i in range(3):
        numbers = []
        currBoard = []
        for k, m in enumerate(marks[3*i:3*i+3]):
            numbers.append(3*i+k)
            currBoard.append(m)
        row = numbers + currBoard
        print '%s|%s|%s\t%s|%s|%s' % tuple(row)
        print sepRows[i]

def setPosition(pos, mark, marks):
    marks[pos] = mark
    return marks

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

def singleWinCheck(marks, p1, p2, p3):
    """
    Check if the same symbol occurs at all three positions.
    """
    return marks[p1] == marks[p2] == marks[p3]
   
def winCheck(marks):
    win = [ [0, 1, 2],
            [3, 4, 5],
            [6, 7, 8],
            [0, 3, 6],
            [1, 4, 7],
            [2, 5, 8],
            [0, 4, 8],
            [2, 4, 6],]
    for p1, p2, p3 in win:
        if singleWinCheck(marks, p1, p2, p3):
            if marks[p1] == ' ' or marks[p2] == ' ' or marks[p3] == ' ':
                continue
            print '\n----------------'
            print '%s is the winner!' % marks[p1]
            print '----------------\n'
            return True
    return False

def allFull(marks):
    return ' ' not in marks

def main():
    marks = []
    players = ['X', 'O']
    init(marks)
    drawBoard(marks)
    gameOver = False
    while (not gameOver):
        for p in players:
            marks = playerTurn(p, marks)            
            if winCheck(marks):
                gameOver = True
                break
            elif allFull(marks):
                print "\nIt's a cat's game!"
                gameOver = True
                break
            else:
                drawBoard(marks)
    drawBoard(marks)

if __name__ == '__main__':
    main()

和斑竹比,偶的惭愧啊,不过还好偶是新手,还说得过去,呵呵
想顺便请教几个问题

[Copy to clipboard] [ - ]
CODE:
sepRows = ['- - -\t- - -', '- - -\t- - -', '']
    print
    for i in range(3):
        numbers = []

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

[Copy to clipboard] [ - ]
CODE:
if __name__ == '__main__':
    main()

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

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

斑竹给点建议啊,
很有启发,多谢大家
抱歉,这么晚才回帖。

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

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

QUOTE:


[Copy to clipboard] [ - ]
CODE:
if __name__ == '__main__':
    main()

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

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

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

Python程序的单元是module,module也可按package组织。你看一下Learning Python的第五章和Python文档里Python Tutorial的第6章吧。