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=["", "", "", "", "", "", "", "", "", "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)
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的更多相关文章
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 使用Python保存屏幕截图(不使用PIL)
起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...
- Python编码记录
字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
- python开发编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
随机推荐
- iOS framework
(一),lipo 命令 1)合并文件: lipo -create xxxX/liblibsql.a xxxx/liblibsql.a -output libsql.a 2)查看Framework 对C ...
- mysql查询中通配符的使用
mysql查询中通配符的使用 在mysql查询中经常会使用通配符,并且mysql的通配符和pgsql的存在区别(稍候再讨论),而且mysql中还可以使用正则表达式. SQL模式匹配: “_” ...
- jquery之insertBefore(),insertAfter(),prependTo(),appendTo()用法详解
导航: 1,insertBefore(),insertAfter(),prependTo(),appendTo()这四个函数用法几乎一样 2, 与之相对的有四个函数:Before(),After(), ...
- python 列表去重(数组)的几种方法
一.方法1 代码如下 复制代码 ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ids: if id not in news_id ...
- [HDOJ5763]Another Meaning(KMP, DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5763 题意:给定两个字符串a和b,其中a中的字符串如果含有子串b,那么那部分可以被替换成*.问有多少种 ...
- Smart Forms&ScriptFrom
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]物料、生产、采购、销售长文本
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Mac : 强大的截图
来源:http://irising.me/2011/11/12135/ Mac的截图功能扩展功能很强大的,不要用QQ那个COM+Ctrl+A弱爆了的截图了~ 首先说一下两种截图1.Command+sh ...
- 异步上传图片,光用jquery不行,得用jquery.form.js插件
异步上传图片,光用jquery不行,得用jquery.form.js插件,百度一下下载这个插件,加jquery,引入就可以了 <form id="postbackground" ...
- 一个封装较好的删除方法(Delete)
前台的引用 @Html.ActionLink(“删除字样”,“后台的删除方法”,new{绑定id},new{@style="样式"});方法,如何要独立使用的话,一般还要使用到相应 ...