Python写个猜数字玩一玩

  • 发布时间:2016年5月24日 16:36
  • 作者:杨仕航
  • 分类标签: Python
  • 阅读(9727)
  • 评论(0)

闲着无聊,写个猜数字的小脚本玩一玩。

简单说一下猜数字的规则,玩家每次需要猜4位不同的数字(0~9)之后,会被告知一个类似于"1A2B"的结果。

1A代表有1个数字存在且其位置正确;

2B代表有2个数字存在但其位置不对。

让返回结果为"4A0B",则完全猜中数字。


这个代码也比较简单,我就不详细说明了。想玩的话,直接复制,玩一下。

#coding:utf-8
__author__ = 'Haddy Yang'

import random

class GuessNum():
    """猜数字类"""
    anwser = ''
    times = 0

    def __init__(self):
        pass

    def get_new(self):
    	#随机生成4位不重复数字
        self.anwser = ''.join(random.sample('0123456789', 4))
        self.times = 0
        return self.anwser

    def check_num(self, num):
        """检查数字
        	num :string ,4 number char
        """
        num = num[:4].ljust(4, ' ')
        self.times += 1
        a = b = 0
        for i, n in enumerate(num):
            if n == self.anwser[i]:
                a+=1
            elif n in self.anwser:
                b+=1

        return a, b

def main():
    print u'欢迎来猜数字 version:1.0 | 2016-05-24'
    guess = GuessNum()

    while True:
        guess.get_new()
        while True:
            num = raw_input(u'请输入4个数字:'.encode('gbk'))
            a, b = guess.check_num(num)
            if a  == 4:
                print u'恭喜你猜到了!答案是%s,猜了%s次。' % (guess.anwser, guess.times)
                break
            else:
                print u'第%s次猜数字:%sA%sB' % (guess.times, a, b)

        is_continue = raw_input(u'是否还继续玩?(y/n):'.encode('gbk')).lower()
        if is_continue != 'y':
            break

if __name__ == '__main__':
    main()

上一篇:我的网站搭建(第19天) 用户中心

下一篇:Access文本框value属性和text属性的区别

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空