一个python练习
问题描述:
有一对兔子,每隔3个月就生一对兔子,生下来的兔子也是每隔3个月就生兔子,以此类推。。。
用python模拟出来:
#!/usr/bin/python3
import random
import string class APairOfRabbits():
def __init__(self):
self.age = 1
self.malename = ''.join(random.sample(string.ascii_letters, 5))
self.femalename = ''.join(random.sample(string.ascii_letters, 4))
self.childs = []
self.parent = None
def getParentInfo(self):
if (None == self.parent):
return None
else:
print("ParentsName: %s" % self.parent.getName())
def getChildsInfo(self):
for child in self.childs:
print("ChildsName:%s" % child.getName())
print("")
def info(self):
print('%s and %s: age %d' % (self.malename, self.femalename, self.age))
self.getParentInfo()
self.getChildsInfo() def propagate(self):
self.childs.append(APairOfRabbits())
self.childs[-1].setParent(self)
def getName(self):
return self.malename + "-" + self.femalename
def growUpOfMonth(self):
self.age += 1
if(0 == (self.age % 3)):
self.propagate() def setParent(self, parent):
self.parent = parent
def getParent(self):
return self.parent
def getChilds(self):
return self.childs class RabbitsFamily():
def __init__(self):
self.rootRabbits = APairOfRabbits()
def dfsUpdateState(self, parent = None):
if None == parent:
parent = self.rootRabbits
for child in parent.getChilds():
self.dfsUpdateState(child)
parent.growUpOfMonth()
def dfsShowState(self, parent = None):
if None == parent:
parent = self.rootRabbits
parent.info()
for child in parent.getChilds():
self.dfsShowState(child) rabbitsFamily = RabbitsFamily()
for i in range(55):
rabbitsFamily.dfsUpdateState()
rabbitsFamily.dfsShowState()
一个python练习的更多相关文章
- 第一个python程序
一个python程序的两种执行方式: 1.第一种方式是通过python解释器: cmd->python->进入python解释器->编写python代码->回车. 2.第二种方 ...
- 第一个python实例--监控cpu
#第一个python实例:监控cpu #/bin/bash/env Python from __future__ import print_function from collections impo ...
- 一个python爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...
- Virtualenv: 一个Python环境管理工具(windown版本)
1.安装virtualenv 在安装virtualenv之前,我们需要安装至少有一个版本的python:因为virtualenv是python的一个第三方模块,必须基于python环境才能安装: 如果 ...
- 3.第一个python程序
学习任何一门语言的第一步,首先要写个'hello world',这算是程序员的一个传统.但在写之前,还有注意几个问题. 首先,python是一门脚本语言,而脚本语言的特点就是:我们写的代码会先由解释器 ...
- ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数
一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...
- 第一个 Python 程序 - Email Manager Demo
看了一些基础的 Python 新手教程后,深深感觉到 Python 的简洁与强大,这是我的第一个 Python Demo.下面是完整代码与执行截图. 代码: # encoding: utf-8 ''' ...
- 【Python脚本】Python创建删除文件-----------我的第一个Python脚本
Python相对C++和Java来说,是解释性语言,非常适合来编写脚本. 很久之前就开始学习Python的语法了,今天写了第一个Python的脚本,来简化我的一些日常工作. 我平时学习的时候喜欢新建一 ...
- Python学习笔记4-如何快速的学会一个Python的模块、方法、关键字
想要快速的学会一个Python的模块和方法,两个函数必须要知道,那就是dir()和help() dir():能够快速的以集合的型式列出该模块下的所有内容(类.常量.方法)例: #--encoding: ...
- 使用PyQt来编写第一个Python GUI程序
原文:使用PyQt来编写第一个Python GUI程序 本文由 伯乐在线 - Lane 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:pythonforengineers.com.欢迎加 ...
随机推荐
- Process Monitor监控进程操作注册表如何实现?
http://zhidao.baidu.com/link?url=Kqav4qkQSprC5FnpHPOGJvhqvY9fJ9-Vdx9g_SWh4w5VOusdRJo4Vl7qIdrG4LwRJvr ...
- 使用Xftp连接Centos 6.6服务器详细图文教程
这篇文章主要介绍了使用Xftp连接Centos 6.6服务器详细图文教程,本文用详细的图文说明讲解了连接服务器和操作服务器的步骤,适合新手,需要的朋友可以参考下 一,打开Xftp软件(下载地址:Xma ...
- linux远程管理器 - xshell和xftp使用教程(zhuan)
准备好连接linux服务器的工具,推荐用xshell和xftp. xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET ...
- Maximum of lines in a DataBand
Hello! I have a problem.I have a DataBand, but I need it to grow only up to 14 lines. If it is beyon ...
- java方法调用及传参
静态方法:有static修饰的方法. 非静态方法:没有static修饰的方法. 方法调用: 一静态方法调用 静态方法/属性 1)一个类:直接调用. 2)不同类/不同文件: a: 类名.属性名/方法名 ...
- APP测试功能点大全
APP测试要点 APP测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试.在测试过程中需要注意的测试点如下: 1.安装和卸载 ●应用是否可以在IOS不同系统版本或 ...
- 为GitLab帐号添加SSH keys并连接GitLab
https://blog.csdn.net/xyzchenxiaolin/article/details/51852333 为github帐号添加SSH keys使用git clone命令从GitLa ...
- python序列基本操作
这里讲一基本概念:容器---可以包含其他对象的对象:两种主要的容器是序列(列表和元祖)和映射(字典) 关于序列的通用基本操作:python中常用的序列主要有两种:列表和元祖 -------索引,切片 ...
- Python之随机选择 random
随机选择:random import random # 从一个序列中随机的抽取一个元素 values=[1,2,3,4,56] # 指定取出N个不同元素 print(random.sample(val ...
- Android No static field XXX of type I in class Lcom/XXX/R$id错
问题复现: 问题原因: 出现这样的情况,你先检查你的依赖工程(module)的对应布局layout/xxx.xml是否跟主项目的layout重名,你点开R文件的时候,你会发现你的布局发生了错乱,导致你 ...