实验目的:

1 .掌握 for 循环、while 循环的基础语法;

2. 理解应用循环解决实践问题的基本思路。

实验内容:

一.格雷戈里公式求圆周率π

使用下述格雷戈里公式求圆周率π。从左往右累加,当累加项的绝对值小于 10

-8时终止计算并输出结果。请参考流程图 x-x 进行程序设计。

解题提示:

1).使用循环从左至右将各项累加;循环的结束条件为累加项之值小于 10

2).循环过程中借助于一个布尔型标志来确定本轮累加是使用加法还是减法;每轮累加后将

该布尔标志取非;

3).除数/分母使用整数类型,每轮累加后,该除数加 2;

4).循环结束后应该累加和乘以 4 再作为π值输出。

二.三天打渔、两天晒网

郭、王两位大侠同上终南山习武,两人最初的战力值均为 100。王大侠骨骼清奇,天赋较高,每练功一天,战力增加 2‰,郭大侠比较愚笨,每练功一天,战力增加 1‰。如果休假一天不练,两人的战力均减少 1‰。相较于王大侠,郭大侠更加勤奋,日日练功,从不休息,而王大侠,则三天打渔,两天晒网,也就是每 5 天的前三天练功,后两天休假。

请编写程序,完成下述任务。

1. 10 年(3650 天)之后,郭大侠和王大侠战力分别是多少?

2. 将郭王二位大侠每天的战力值存储在两个列表中,然后参考下述代码绘制两位大侠的战力增长曲线并进行比较。绘制出来的战力增长曲线如图 3-1所示。

解题提示:

1).使用 for 循环,逐天计算两位大侠的新战力,并置入各自的战力列表;

2).郭大侠的每日战力 = 前日战力 * 1.001;

3).如果打渔日,王大侠的当日战力 = 前日战力 * 1.002;如果是晒网日,王大侠的当日战

力 = 前日战力 * 0.999;

4).使用表达式 x % 5 in [0,1,2]来判断第 x 天是王大侠的打渔日还是晒网日;

5).matplotlib 模块需要提前安装,安装方法请参考pLp方法。

三. 验证哥德巴赫猜想

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于 2 的偶数总能表示为两个素数之和。比如:24=5+19,其中 5 和 19 都是素数。请设计一个程序,验证 20 亿以内的偶数都可以分解成两个素数之和。[输入格式]:在一行中给出一个(2,2 000 000 000]范围内的偶数 N。

[输出格式]:在一行中按照格式“N = p + q”输出 N 的素数分解,其中 p ≤ q 均为素数。

又因为这样的分解不唯一(例如 24 还可以分解为 7+17),要求必须输出所有解中 p 最小的解。

解题提示:

1).使用 for 循环遍历从 2 到 N 的全部 p 值,遍历顺序为从小到大;

2).使用 isPrime()函数检查 p 和 q(值为 n-p)是否均为素数,如果满足条件,按格式输出 N

= p + q,并使用 break 语句结束循环;

3).isPrime()函数的定义如下:

四、 猜数字

——想个数给你猜,只提示猜大了或者猜小了,看看多少次能猜?

编写一个程序,产生一个 1 ~ 1000 之间的随机整数,然后请用户猜这个数字。如果用户输入的数字太大,则打印“猜大了”;如果用户输入的数字太小,则打印“猜小了”;如果用户猜对了,则打印“恭喜你,猜对了!”。上述猜数过程循环进行,当用户猜对后,退出循环,并打印用户的总猜测次数。

解题提示:

1). 请参考流程图 2-1并使用 while 循环实现;

2). 随机数可通过 random.randint()函数实现。

五、 最大公约数

两个正整数的最大公约数(Greatest Common Divisor)是指两个正整数的公有约数中

最大的一个。即如果 GCD(x,y) = k,则 k 是能同时整除 x 和 y 的最大除数。

请编写程序,从键盘读取两个正整数 x 和 y,然后分别使用下述两种方法计算并打印二者的最大公约数。

1. 穷举法

穷举法也称暴力求解法(brute force),它利用计算机计算速度快的优势,列举所有的可能“解”并逐一尝试鉴别,直到找到正确解。

解题提示:

1). 请参考流程图 3-1并使用 while 循环实现;请注意该流程图没有包括输入整数 x 及 y 的部分;

2). d = min(x,y)表示 d 取值为 x,y 中的较小值,其既可以使用 if 条件语句,也可以使用if 条件表达式来实现;

3). x % d == 0 表示 x 除以 d 的余数为 0,即 d 可以整数 x,它是 x 的因数。

2. 辗转相除法

欧几里德(Euclidean)在《几何原本》中描述了一种求解最大公约数的快速算法,即

辗转相除法。其数学表达式为:GCD(x,y) =GCD(x,x%y)设x>=y

六、 搬砖

工地搬砖,男人一人搬 3 块,女人一人搬 2 块,小孩两人搬 1 块。n 个人搬 n 块砖,总共有哪些搬法?

1. 请编写程序,输入整数 N,然后枚举列所有合法答案及合法答案的总数。

解题提示:

1). 程序宜用穷举法实现,其中一个实现方案是使用三重循环。请参考下述伪代码;

2). 需注意 Python 中整数除以整数的结果为浮点数,浮点数的存储误差可能导致比

较失败,所以小孩数应整除 2。2. 对上述程序进行改进,提高程序的执行效率。

解题提示:

1). 男人,女人的数量上限分别改为 N/3 和 N/2;

2). 将三重循环改为两重循环,小孩数通过 N – 男人 – 女人直接计算

实验过程:

一.格雷戈里公式求圆周率π

pi= 3.141592633590251

二.三天打渔、两天晒网

3650

3840,45605,1844,68817

三. 验证哥德巴赫猜想

24

24 = 5 + 19

四、 猜数字

五、 最大公约数

25,55

5

12,6

6

六、 搬砖

大一Python之循环解决实际问题相关推荐

  1. python循环输入若干成绩_完美解决在oj中Python的循环输入问题

    完美解决在oj中Python的循环输入问题 这几天做题被python的循环输入问题给烦死了,好好查了一下,记录在此. while True: t= sys.stdin.readline().strip ...

  2. python for 循环中使用 remove 删除列表中的元素

    python for 循环中使用 remove 删除列表中的元素 错误的代码 # !/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- o ...

  3. 独家 | 数据科学家的必备读物:从零开始用 Python 构建循环神经网络(附代码)...

    作者:Faizan Shaikh 翻译:李文婧 校对:张一豪 本文约4300字,建议阅读10+分钟. 本文带你快速浏览典型NN模型核心部分,并教你构建RNN解决相关问题. 引言 人类不会每听到一个句子 ...

  4. python for循环删除

    python for循环遍历时,能动态删除元素吗?本文讲给你答案. 先来上个代码: # -*- coding:utf-8 -*- list = [1,2,3,4,5,6,7,8]# 使用for 删除某 ...

  5. 【Python基础】Python轻量级循环-列表推导式

    概  述 Python 列表推导式(list comprehension)利用其他列表创建新的列表,工作方式类似于for循环,使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表 ...

  6. python具体应用过程_python公开课|Python for循环的具体应用就是python流程控制的核心,想学会就来看看...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

  7. c++获取输入数字的位数/获取位数并且将其存入数组中/获取位数存入数组并且利用它解决实际问题

    1.仅仅获取数字的位数: int checkNumber(int num){int weishu = 0;for (int i = 1, num1 = num, shuzu = 0; num / i; ...

  8. python for循环流程图_python流程图

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 对于刚开始接触python的小伙伴来说,没有思路方法,不知道从何开始学习,把软件 ...

  9. 使用python有趣地解决一道动态币值规划方案

    使用python有趣地解决一道动态币值规划方案 题目 币值规划目的 解法一 解法二 解法三 更新部分 总结 大家好,最近碰到一道动态币值规划问题,通过几种方法求解,深得其奥妙,也十分有趣,特将我的心路 ...

最新文章

  1. 小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐
  2. PHP如何添加自带的扩展库
  3. 判断文件是否损坏_称重传感器好坏的判断方法,看完秒懂!
  4. 超级usb万能启动盘
  5. .写一个方法 void printScore(int score),输出相应的等级。score代表分数,等级格式如下:
  6. Linux课程实践一:Linux基础实践(SSH)
  7. 关于JS中使用JSON.parse长整型数丢失精度的问题解决
  8. Android p Sign Tool
  9. 拼多多:有营销号“骗粉博出位” 将用法律武器维权
  10. 远程推送,集成极光的SDK,证书制造
  11. JavaScript中的“黑话”
  12. 【算法竞赛进阶指南 0x31 质数】阶乘分解【唯一分解定理】
  13. python 扫描枪_python实现超市扫码仪计费
  14. word中Mathtype公式/标题及页码变成一串英文代码怎么办
  15. 球定位实景导航 iOS实用应用周排行
  16. 基于神经网络的目标检测论文之结尾:总结与展望
  17. 基于UCOSII的RS485通信(STM32F107)
  18. 计算机视觉基础知识复习
  19. layer弹出层的位置设置
  20. 怎么解决word中英文混合换行后字体间隔变大问题

热门文章

  1. 不用对 雷蛇影鲛终极版thx 耳机开启空间音效。
  2. 采购管理系统(Java+SSH+mysql)
  3. java计算机毕业设计ssm智慧餐厅点餐管理系统(源码+系统+mysql数据库+Lw文档)
  4. 怎么批量抠复杂的图_PhotoShop怎么抠图?ps最简单的抠图方法是什么?
  5. 更换SSD,Ghost Win10无法启动问题
  6. cut sticks
  7. 蓝牙|BLE Mesh详解
  8. [SDU软件工程实践]Blog4-processLine及processCmd
  9. 读《正见 佛陀的证悟》
  10. 如何成为CNNIC域名注册服务机构及域名注册服务机构申请书