#!/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. centos6.6下编译安装mysql5.6之后启动失败:Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

    今天在编译安装mysql5.6时候出现Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysq ...

  2. word2007如何进行批注

    在正常的办公或者学校撰写论文,请别人进行提出修改意见是不可避免的,在word2007中提供了批注修改模式,十分方便,给撰写文档和批阅文档的人带来了极大的方便.本节介绍如何在word2007中进行批注及 ...

  3. GMM及EM算法

    GMM及EM算法 标签(空格分隔): 机器学习 前言: EM(Exception Maximizition) -- 期望最大化算法,用于含有隐变量的概率模型参数的极大似然估计: GMM(Gaussia ...

  4. 协方差Covariance的表述推导

    今天想了一下关于概率论的一维数据期望.方差以及高维数据的矩阵表示,突然想到为什么在一维中 方差的表示为:V(x) = E((x-E(x))2) 而到了高维,这样的表述就成了协方差呢?V(X) = E( ...

  5. 使用entityframework操作sqlite数据库

    首先要安装好,所需要的类库,通过NuGet来处理 http://stackoverflow.com/questions/28507904/vs-2015-sqlite-data-provider 安装 ...

  6. Checking For User Permissions Before Updating or Inserting The Records in Oracle Forms

    Suppose you want to check the user permissions on inserting or updating the records in Oracle Forms, ...

  7. tesseract-ocr了解

    安装文件下载地址 http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.01-1.exe README For the lat ...

  8. 用iconv指令解决utf8和gb18030编码间转换

    Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb18030.  解决方案:  在终端中,进入到 ...

  9. mac 配置jdk maven

    1.从oracle下载jdk 链接:http://www.oracle.com/technetwork/java/javase/downloads/index.html 然后安装jdk 2.下载Mav ...

  10. NS_ASSUME_NONNULL_BEGIN,NS_ASSUME_NONNULL_END

    Nonnull区域设置(Audited Regions) 如果需要每个属性或每个方法都去指定nonnull和nullable,是一件非常繁琐的事.苹果为了减轻我们的工作量,专门提供了两个宏:NS_AS ...