#!/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=["", "", "", "", "", "", "", "", "", "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
在一个木板上有三根杆子\n最左边的杆子
自上而下,由小到大串着n层的塔\n,游戏的目的是
将最左边的杆子上的塔移动到最右\n边的杆子上,
条件是一次只能移动一个盘,\n并且不允许大盘放在小盘上。;
如果输入2~7以外的任何字符那么n=4\n '''
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
计算机告诉你这个四位数有几个数正确,以及有几个位置正确\n
比如如果那个数是1234,你猜的是2354\n那么计算机会回答3a1b
表示你这个四位数有3个数正确,以及有1个连位置也正确\n '''
e=caigame()
e.start()
def z87():
#黑白子交换
def nex(x):
if '' in x:return x.replace('','')
if '' in x:return x.replace('','')
if '' in x and '' not in x:return x.replace('','')
if '' in x and '' not in x:return x.replace('','')
return
n=4
t,r=''*n,''*n
x=t+''+r
s=r+''+t
while x!=s:
print x
x=nex(x)
print s
if __name__ == '__main__':
z91()
#z93()

python 练习 2的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. MySQL基础(四)——索引

    MySQL基础(四)--索引

  2. SqlSever基础 group by之后,加having 对分组之后的数据在进行处理

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  3. linux下的基本网络配置

    第一种:使用命令修改(直接即时生效,重启失效)#ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up说明:eth0是第一个网卡,其他依次为eth1,et ...

  4. UVA 10564 十 Paths through the Hourglass

     Paths through the Hourglass Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & % ...

  5. Node.js 事件循环(Event Loop)介绍

    Node.js 事件循环(Event Loop)介绍 JavaScript是一种单线程运行但又绝不会阻塞的语言,其实现非阻塞的关键是“事件循环”和“回调机制”.Node.js在JavaScript的基 ...

  6. C#TextBox自动滚动到最低端

    C#中一个RichTextBox,当新写入内容时,超过当前显示区域后,自动滚动到最低端,方便查看内容. private void txtInfo_TextChanged(object sender,  ...

  7. BSGS模版 a^x=b ( mod c)

    kuangbin的BSGS: c为素数: #define MOD 76543 int hs[MOD],head[MOD],next[MOD],id[MOD],top; void insert(int ...

  8. [转载] HTTP 协议漫谈

    原文: http://blog.jobbole.com/88199/ 简介 网络上已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够 ...

  9. ubuntu虚拟环境virtualenv中djanggo连接mysql

    在ubuntu服务器上安装MYSQLDB,执行:sudo apt-get install python-mysqldb, 若提示: ---------------------------------- ...

  10. ssh免密码登陆及其原理

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想 ...