基础练习-2

基础练习-2

11. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析:
兔子的规律为数列1,1,2,3,5,8,13,21....
#1.
f1 = 1
f2 = 1
for i in range(1,22):print( '%12ld %12ld' % (f1,f2),)if (i % 3) == 0:print( '')f1 = f1 + f2f2 = f1 + f2# 以上实例输出结果为:
'''1           1            2           3            5           8 13          21           34          55           89         144 233         377          610         987         1597        2584 4181        6765        10946       17711        28657       46368 75025      121393       196418      317811       514229      832040 1346269     2178309      3524578     5702887      9227465    14930352 24157817    39088169     63245986   102334155    165580141   267914296'''#2.
#递归做,非常慢。计算n=36就要大概七八秒吧
def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)
print( fib(36))#3.
# time 为第几个月,n 为 3
def rabbit(time,n):if time<1:return 0elif time==1:num=1elif time=2:home.append(Rabbits.copy())else:j['rabbits']+=1time+=1print( '兔子数量为 %u。'% len(home))#9.
a = 1
b = 1
for i in range(1,21,2):print( '%d %d'%(a,b),)a += bb += a#10.
# 兔子问题和斐波那契数列差不多,可以用 List 解决:
def rabbit(n):if n == 1:return [1]if n == 2:return  [1,1]rabbits = [1,1]for i in range(2,n):rabbits.append( rabbits [-1] + rabbits [-2])  #取List倒数第一个和倒数第二个数值相加return rabbits
print( rabbit(18))  #第十八个月的数量#11.
# 这竟然是斐波那契数列,没看出来。我用模拟兔子出生的方式计算的数量:
all_rabbit = []    class Rabbit():def __init__(self, birthday):self.birthday = birthdayall_rabbit.append(self)def makechild(self, month):if month-self.birthday>=2:Rabbit(month)Rabbit(1)
for i in range(1, 22):[j.makechild(i) for j in all_rabbit[:]]print(len(all_rabbit))

测试代码

12. 判断101-200之间有多少个素数,并输出所有素数。

程序分析:
判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。     
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):k = int(sqrt(m + 1))for i in range(2,k + 1):if m % i == 0:leap = 0breakif leap == 1:print( '%-4d' % m)h += 1if h % 10 == 0:print( '')leap = 1
print( 'The total is %d' % h)#以上实例输出结果为:
'''
101 
103 
107 
109 
113 
127 
131 
137 
139 
149 151 
157 
163 
167 
173 
179 
181 
191 
193 
197 199 
The total is 21
'''

测试代码

13. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
for n in range(100,1000):i = n / 100j = n / 10 % 10k = n % 10if n == i ** 3 + j ** 3 + k ** 3:print( n)#以上实例输出结果为:
'''
153
370
371
407
'''

测试代码

14. 将一个正整数分解质因数。例如:输入90,打印出90=233*5。

程序分析:
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
def reduceNum(n):print( '{} = '.format(n),)if not isinstance(n, int) or n <= 0 :print( '请输入一个正确的数字 !')exit(0)elif n in [1] :print( '{}'.format(n))while n not in [1] : # 循环保证递归for index in xrange(2, n + 1) :if n % index == 0:n /= index # n 等于 n/indexif n == 1: print( index )else : # index 一定是素数print( '{} *'.format(index),)break
reduceNum(90)
reduceNum(100)#以上实例输出结果为:
'''
90 =  2 * 3 * 3 * 5
100 =  2 * 2 * 5 * 5
'''

测试代码

15. 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

程序分析:
(a>b)?a:b这是条件运算符的基本例子。
score = int(input('输入分数:\n'))
if score >= 90:grade = 'A'
elif score >= 60:grade = 'B'
else:grade = 'C'print( '%d 属于 %s' % (score,grade))# 以上实例输出结果为:
'''
输入分数:
89
89 属于 B
'''

测试代码

16. 输出指定格式的日期。

程序分析:
使用 datetime 模块。
import datetimeif __name__ == '__main__':# 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法print(datetime.date.today().strftime('%d/%m/%Y'))# 创建日期对象miyazakiBirthDate = datetime.date(1941, 1, 5)print(miyazakiBirthDate.strftime('%d/%m/%Y'))# 日期算术运算miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))# 日期替换miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))# 以上实例输出结果为:
'''
21/10/2015
05/01/1941
06/01/1941
05/01/1942
'''

测试代码

17. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:
利用 while 或 for 语句,条件为输入的字符不为 '\n'。
#使用 while 循环
#!/usr/bin/python
# -*- coding: UTF-8 -*-import string
s = input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
i=0
while i < len(s):c = s[i]i += 1if c.isalpha():letters += 1elif c.isspace():space += 1elif c.isdigit():digit += 1else:others += 1
print( 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others))#使用 for 循环
#!/usr/bin/python
# -*- coding: UTF-8 -*-import string
s = input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in s:if c.isalpha():letters += 1elif c.isspace():space += 1elif c.isdigit():digit += 1else:others += 1
print( 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others))#以上实例输出结果为:
请输入一个字符串:
123runoobc  kdf235*(dfl
char = 13,space = 2,digit = 6,others = 2

测试代码

18. 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

程序分析:
关键是计算出每一项的值。
Tn = 0
Sn = []
n = int(input('n = '))
a = int(input('a = '))
for count in range(n):Tn = Tn + aa = a * 10Sn.append(Tn)print( Tn)Sn = reduce(lambda x,y : x + y,Sn)
print( "计算和为:",Sn)#以上实例输出结果为:
'''
n = 4
a = 4
4
44
444
4444
计算和为: 4936
'''

测试代码

19. 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

程序分析:无。
from sys import stdout
for j in range(2,1001):k = []n = -1s = jfor i in range(1,j):if j % i == 0:n += 1s -= ik.append(i)if s == 0:print( j)for i in range(n):stdout.write(str(k[i]))stdout.write(' ')print( k[n])#以上实例输出结果为:
'''
6
1 2 3
28
1 2 4 7 14
496
1 2 4 8 16 31 62 124 248
'''

测试代码

20. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

程序分析:无
tour = []
height = []hei = 100.0 # 起始高度
tim = 10 # 次数for i in range(1, tim + 1):# 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)if i == 1:tour.append(hei)else:tour.append(2*hei) hei /= 2height.append(hei)print('总高度:tour = {0}'.format(sum(tour)))
print('第10次反弹高度:height = {0}'.format(height[-1]))# 以上实例输出结果为:
'''
总高度:tour = 299.609375
第10次反弹高度:height = 0.09765625
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143277.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【算法练习Day7】反转字符串替换空格反转字符串中的单词左旋转字符串

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 反转字符串反转字符串 I…

十三,打印辐照度图

上节HDR环境贴图进行卷积后&#xff0c;得到的就是辐照度图&#xff0c;表示的是周围环境间接漫反射光的积分。 现在也进行下打印&#xff0c;和前面打印HDR环境贴图一样&#xff0c;只是由于辐照度图做了平均&#xff0c;失去了大量高频部分&#xff0c;因此&#xff0c;可以…

游戏开发过程中需要注意哪些问题呢?

游戏开发是一个复杂的过程&#xff0c;需要注意多个方面的问题。以下是一些需要特别关注的关键问题&#xff1a; 游戏设计&#xff1a; 确定游戏的核心玩法和目标受众。 制定详细的游戏设计文档&#xff0c;包括角色、关卡设计、游戏机制和故事情节。 技术选择&#xff1a;…

react项目优化

随着项目体积增大&#xff0c;打包的文件体积会越来越大&#xff0c;需要优化&#xff0c;原因无非就是引入的第三方插件比较大导致&#xff0c;下面我们先介绍如何分析各个文件占用体积的大小。 1.webpack-bundle-analyzer插件 如果是webpack作为打包工具的项目可以使用&…

晨控CK-FR08系列读写器与LS可编程逻辑控制器MODBUSRTU连接手册

晨控CK-FR08系列读写器与LS可编程逻辑控制器MODBUSRTU连接手册 晨控CK-FR08是一款基于射频识别技术的高频RFID标签读卡器&#xff0c;读卡器工作频率为13.56MHZ&#xff0c;支持对I-CODE 2、I-CODE SLI等符合ISO15693国际标准协议格式标签的读取。读卡器内部集成了射频部分通信…

开源框架中的责任链模式实践

作者&#xff1a;vivo 互联网服务器团队-Wang Zhi 责任链模式作为常用的设计模式而被大家熟知和使用。本文介绍责任链的常见实现方式&#xff0c;并结合开源框架如Dubbo、Sentinel等进行延伸探讨。 一、责任链介绍 在GoF 的《设计模式》一书中对责任链模定义的&#xff1a;将…

一个关于IntroductionAdvisor的bug

一个关于IntroductionAdvisor的bug public class TestMain {public static void main(String[] args) {// 1. 准备被代理的目标对象People peo new People();// 2. 准备代理工厂ProxyFactory pf new ProxyFactory();// 3. 准备introduction advice,advice 持有需要额外添加的…

Go 围炉札记

文章目录 一、安装二、文档三、使用 一、安装 VSCode 和 CLion 为 Go 开发配置Visual Studio Code | Microsoft Learn VScode下配置Go语言开发环境【2023最新】 基础篇&#xff1a;新手使用vs code新建go项目 vscode里安装Go插件和配置Go环境 GO 笔记 Golang 配置代理 golang…

得物API元数据中心探索与思考

一、背景 目前市面上针对API的管理平台很多&#xff0c;但由于各种客观因素&#xff0c;这些平台的功能都更多聚焦在API文档的消费侧。而对于API文档的生成都非常依赖开发人员的手动创建&#xff0c;很难保障文档的实时性和有效性。市面上常见的API管理平台&#xff0c;由于缺…

【RabbitMQ实战】04 RabbitMQ的基本概念:Exchange,Queue,Channel等

一、简介 Message Queue的需求由来已久&#xff0c;80年代最早在金融交易中&#xff0c;高盛等公司采用Teknekron公司的产品&#xff0c;当时的Message queuing软件叫做&#xff1a;the information bus&#xff08;TIB&#xff09;。 TIB被电信和通讯公司采用&#xff0c;路透…

Java基础知识

目录 声明 JVM功能说明 功能1&#xff1a;实现Java程序的跨平台性 功能2&#xff1a;自动内存管理(内存分配、内存回收) 相关面试题 关键字和保留字 相关面试题 变量和数据类型 自动类型提升 强制类型转换 基本数据类型转换成字符串 使用String类的valueOf方法&…

怎么把一个音频平均拆分成多个?3个方法快速拆分

怎么把一个音频平均拆分成多个&#xff1f;近年来&#xff0c;随着音频文件在日常生活和工作中的广泛应用&#xff0c;人们对于对音频进行编辑、处理和转换的需求也越来越高。由此&#xff0c;音频编辑软件应运而生&#xff0c;可帮助我们轻松地剪辑、切分、编辑和转换音频文件…

用CRM系统协助销售跟踪客户

客户跟踪对销售来说非常重要&#xff0c;销售不及时跟进很容易导致潜在客户流失。那么对于销售来说&#xff0c;该如何做好客户跟踪呢&#xff1f;或许可以使用CRM客户管理系统。下面来说说&#xff0c;CRM系统如何协助销售跟踪客户&#xff1f; 智能联系客户提醒 销售人员通…

探索视听新纪元: ChatGPT的最新语音和图像功能全解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f916; 人工智能 AI: &#x1f9e0; Machine …

正则表达式贪婪模式和非贪婪模式

一、贪婪模式 贪婪模式表示尽可能多的匹配字符串&#xff0c;正则表达式六个量词元字符?、、*、{n}、{n,m}、{n,}默认是贪婪模式 接下来引入一个场景来分析说明 获取html a标签href属性的值 <a href"https://www.baidu.com/" attr"abc"></a>…

深度学习与视频直播美颜sdk:背后的技术革新

时下&#xff0c;深度学习技术在视频直播美颜sdk中的应用正引领着一场技术革新的浪潮。本文将探讨深度学习如何在视频直播美颜sdk背后推动了技术的革新&#xff0c;以及它是如何影响我们的日常直播体验的。 一、传统美颜技术的局限性 在深入探讨深度学习之前&#xff0c;让我们…

linux内网渗透

一、信息收集 主机发现&#xff1a; nmap -sP 192.168.16.0/24 端口探测 masscan -p 1-65535 192.168.16.168 --rate1000 开放端口如下 nmap端口详细信息获取 nmap -sC -p 8888,3306,888,21,80 -A 192.168.16.168 -oA ddd4-port目录扫描 gobuster dir…

【EI会议征稿】2023计算机网络技术与电子信息工程国际学术会议(CNTEIE 2023)

2023计算机网络技术与电子信息工程国际学术会议&#xff08;CNTEIE 2023&#xff09; 2023 International Conference on Computer Network Technology and Electronic and Information Engineering 2023计算机网络技术与电子信息工程国际学术会议&#xff08;CNTEIE 2023&a…

Unity中Shader模板测试使用到的二进制

文章目录 前言&#xff08;接上一篇文章&#xff09;一、模板测试公式1、简化版(在ReadMask默认值的情况下)2、完整版 二、二进制的值1、0 和 1组成2、符号3、二进制的与运算4、二进制和十进制转化 三、在Shader中的实际操作 前言&#xff08;接上一篇文章&#xff09; Unity中…

软件测试经验盘点:测试人的至暗时刻高光时刻

作为一名测试工程师&#xff0c;在项目开展中可能会遇到一些困难和挑战&#xff0c;这些情况可能会使我们感到沮丧和无望。以下是一些可能被称为测试工程师的至暗时刻&#xff1a; 项目/版本上线前&#xff1a; ◆需求文档多次评审不通过&#xff0c;浪费了大量的测试时间&…