欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用python实现拉钩网上的FizzBuzzWhizz问题示例

程序员文章站 2023-11-03 21:25:46
最近好多分享这个问题的代码,题目说的是用面向对象或者函数式编程,下面是python的实现示例 复制代码 代码如下:#!/usr/bin/python#encoding:u...

最近好多分享这个问题的代码,题目说的是用面向对象或者函数式编程,下面是python的实现示例

复制代码 代码如下:

#!/usr/bin/python
#encoding:utf8

'''
the game of "fizzbuzzwhizz"
author : wang.jiankui89@gmail.com
mobile : 130-2199-5152
'''
import sys

class teacher:
    def __init__(self, student_num):
        self.student_num = student_num

    def gamestart(self, numlist):
        for i in range (1, self.student_num + 1):
            stu = student(i)
            print stu.answer(numlist)

class student:
    def __init__(self, my_num):
        self.my_num = my_num

    def judgemod(self, numlist):
        modres = ""
        for num in numlist:
            if self.my_num % num == 0:
                modres += rule[num]
        return modres if modres else self.my_num

    def judgecontain(self, first_num):
        conres = ""
        if str(first_num) in str(self.my_num) :
            conres = rule[first_num]
        return conres

    def answer(self, numlist):
        conres = self.judgecontain(numlist[0])
        return conres if conres else self.judgemod(numlist)

def getops():
    '''parse options'''
    if len(sys.argv) != 4 :
        print "use as fizzbuzzwhizz.py [0-9] [0-9] [0-9]"
        sys.exit()
    else:
        first_num = int(sys.argv[1])
        second_num = int(sys.argv[2])
        third_num = int(sys.argv[3])
    return first_num, second_num, third_num

def main():
    first_num, second_num, third_num = getops()
    global rule
    rule = {first_num:"fizz", second_num:"buzz", third_num:"whizz"}

    student_num = 100

    tea = teacher(100)
    tea.gamestart( (first_num, second_num, third_num) )

if __name__ == "__main__":
    main()