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线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
随机推荐
- 定时自动启动任务crontab命令用法
crontab简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行.该词 ...
- ODBC连接mysql
配置/etc/odbc.ini 执行命令:isql freeswitch freeswitch 123456 -v 第一个报错: [08S01][unixODBC][MySQL][ODBC 5.3(w ...
- ggplot2 legend图例的修改
ggplot2中的legend包括四个部分: legend.tittle, legend.text, legend.key, legend.backgroud.针对每一部分有四种处理方式: eleme ...
- vsftpd配置参数详细整理
vsftpd配置参数详细整理 -|白王斧三又干一 vsftpd配置参数详细整理 -|白王斧三又干一 发表于 2005-10-23 20:30:00 1.vsftpd配置参数详细整理#接受 ...
- ubuntu下解压zip文件乱码
安装unar 即可解决问题 sudo apt get install unar
- [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- MySQL记录操作
说明:value的值可以为数据,DEFAULT,NULL,expr 含有ATUO_INCREMENT的列可以插入DEFAULT.NULL,或者不插入记录来实现自动增长. 插入记录的三种方法:①可以同时 ...
- Xcode error: conflicting types for 'XXXX'
问题描述:在main方法中调用了一个写在main方法后面的方法,比如: void main(){ A(); } void A(){} Xcode编译后就报错:conflicting types for ...
- yii 验证码的使用
在HappyController 中加入 public function actions(){ return array( // captcha action renders the CAPTCHA ...
- jquery 跳转到当前页面指定位置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...