#!/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. jquery post 报404错误

    如果确定页面存在,那很可能是程序执行时报错,可改成get方式来确认一下.

  2. linux内核中的GPIO系统之(2):pin control subsystem

    一.前言 在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况: (1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码.例如:在b ...

  3. CSS属性前的 -webkit, -moz,-ms,-o

    -moz-对应 Firefox, -webkit-对应 Safari and Chrome-o- for Opera-ms- for Internet Explorer(microsoft) 在CSS ...

  4. CentOS 7 (无盘安装)PXE服务器的搭建(失败求助版)

    折腾了一天半,PXE无盘服务器以暂时失败而告终. 基本原理 1. 首先客户端主机需要支持PXE,大部分主板都支持. 2. PXE服务器需要安装DHCP.TFTP.FTP服务. 3. DHCP服务用来给 ...

  5. sql 语句 嵌套子查询 执行顺序分析

    --创建测试数据create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))inser ...

  6. “System.Data.OracleClient.OracleConnection”已过时

    处理办法: 在oracle 安装目录下 找到 Oracle.DataAccess.dll添加引用,然后 using Oracle.DataAccess.Client;其他的都不用动,即可.连接字符串中 ...

  7. html bootstrap 表头固定在顶部,表列 可以自由滚动的效果

    该效果主要是依照 bootstrap 的一个样式,class="navbar-fixed-top"; 参考网址为:http://v3.bootcss.com/components/ ...

  8. Java初始化(构造器)

    在类的内部,变量定义的先后顺序决定了初始化的顺序.即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化. import static humeng.com.cnblo ...

  9. FileCopy

    /*[入]指的是到内存里,[出]指的是到内存外*/ import java.io.*; public class MyReadFile{ public static void main(String[ ...

  10. iOS JS交互

    1. 添加本地js文件, 并配置head中的属性 function increaseMaxZoomFactor() {        var element = document.createElem ...