• python 练习 2


    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from random import shuffle
    class caigame:
        win=False
        flag=False
        life=12
        what=-1
        s1=''
        map1=[]
        thenum=0
        def start(self):
            t=range(1,10)
            shuffle(t)
            self.thenum=t[0]*1000+t[1]*100+t[2]*10+t[3]
            self.inmap()
            print self.thenum
            while self.life>0:
                self.GetResults()
            if self.win :
                print "你赢了"
            elif  self.flag:
                print "你退出了"
            else : print "你输了"
            return
        def GetResults(self):
            self.life-=1
            s1=raw_input('''输入你猜的那个数字
    或者输入Q或者q退出
    或者输入A或者a自动猜
    ''')
            if s1 in ['Q','q']:
                self.life=0
                self.flag=True
                return
            elif s1 in ['A','a']:
                s1= self.autodo()
            else:
                pass
            self.s1=s1
            w=self.getnum(s1)
            self.what=w
            print s1,":",w[0],"a",w[1],"b"
            if w[1]==4:
                self.life=0
                self.win=1
                return
            return
        def getnum(self,x,n1=-1):
            if n1==-1:n1=self.thenum
            n1=str(n1)
            a=len(filter(lambda m,n=n1:m in n,str(x)))
            b=len(filter(lambda m,n=n1,k=str(x):n.find(m)==k.find(m),str(x)))
            return [a,b]
        def inmap (self):
            r={}
            t=range(1,10)
            for i in t:
                for j in t:
                    for m in t:
                        for n in t:
                            if i!=j!=m!=n!=i and j!=n and m!=i:
                                r[int(str(i)+str(j)+str(m)+str(n))]=1
            self.map1=r.keys()
            self.map1.sort()
            return
        def autodo(self):
            if self.what!=-1:
                self.map1=filter(lambda m,n=self.what,k=self.getnum ,ttt=self.s1:
                                 n==k(ttt,m),self.map1)
            #if len(self.map1)<9 :print self.map1
            if self.map1[0]!=self.s1:
                return self.map1[0]
            else:
                return self.map1[-1]
    
    def z86():
        #洗牌发牌
        t=[]
        def g(x):
            sh,yu=divmod(x,13)
            return [sh,yu]
        def g2(x,y):
            t=[]
            s1=["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]
            for i in x:
                if i[0]==y:
                    t+=[i[1]]
            t.sort()
            t=map(lambda m,n=s1:n[m],t)
            return t
        s2=[u"黑桃", u"红桃", u"方片", u"草花"]
        s3=[u"",u"",u"西",u""]
        t=range(52)
        shuffle(t)
        t=map(g,t)
        t=t[:13],t[13:26],t[26:39],t[39:]
        m=range(4);
        for i in m:
            print s3[i]
            for j in m:
                print s2[j],g2(t[i],j)
        print
    def z93():
        ''' ** 汉诺塔游戏 ** 
         这个游戏是为了移动一个塔 
         你输入一个小数,这个数只能是2~7 
         这个数代表塔的层数
     
         在一个木板上有三根杆子
    最左边的杆子
            自上而下,由小到大串着n层的塔
    ,游戏的目的是
            将最左边的杆子上的塔移动到最右
    边的杆子上,
            条件是一次只能移动一个盘,
    并且不允许大盘放在小盘上。;
         如果输入2~7以外的任何字符那么n=4
     '''
        def g(x,y):
            s4=x==1 and ' '*7 or '' 
            s3="-"* (abs(x-y)==2 and 12 or 5)
            s3= x>y and s3+">" or "<"+s3
            print s4+str(x)+s3+str(y)
            return
        def move(n,z,m,y):
            if n>0:
                move(n-1,z,y,m)
                g(z,m)
                move(n-1,y,m,z)
            return
        t=raw_input("输入那个塔的层数")
        t=int(t)
        if not 8>t>1:t=4
        move(t,0,2,1)
        return
    def z91():
        '''**人机猜数游戏 ** 
     这个游戏是为了 猜数. 这个数字是四位数 
     你输入一个四位数,各位数只能是1~9 
     计算机告诉你这个四位数有几个数正确,以及有几个位置正确
     
     比如如果那个数是1234,你猜的是2354
    那么计算机会回答3a1b 
     表示你这个四位数有3个数正确,以及有1个连位置也正确
     '''
        e=caigame()
        e.start()
    def z87():
        #黑白子交换
        def nex(x):
            if '012' in x:return x.replace('012','210')
            if '120' in x:return x.replace('120','021')
            if '10' in x and '2102' not in x:return x.replace('10','01')
            if '02' in x and '1021' not in x:return x.replace('02','20')
            return
        n=4
        t,r='1'*n,'2'*n
        x=t+'0'+r
        s=r+'0'+t
        while x!=s:
            print x
            x=nex(x)
        print s
    if __name__ == '__main__':
        z91()
        #z93()
  • 相关阅读:
    自定义的tabBarController的几种方法
    JAVA如何把一个float四舍五入到小数点后2位,4位,或者其它指定位数.
    ALAssetsLibrary使用
    UITabBarController详解
    学习笔记:Tab Bar 控件使用详解
    iOS开发 跳转场景的三种方式
    Java中文件与字节数组转换
    'NSUnknownKeyException', reason:....etValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
    开源项目
    object-c的异常处理机制
  • 原文地址:https://www.cnblogs.com/kuihua/p/5521967.html
Copyright © 2020-2023  润新知