第4周 Python程序流程控制刷题(循环结构)

2024-03-23 13:12

本文主要是介绍第4周 Python程序流程控制刷题(循环结构),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单击题目,直接跳转到页面刷题,一周后公布答案。

  1. P5722:数列求和
  2. B2054:求平均年龄
  3. B2059:奇数求和
  4. B2064:斐波那契数列
  5. B2077:角谷猜想
  6. B2098:整数去重
  7. B2128:素数个数

1. P5722:数列求和

题目描述

计算 1 + 2 + 3 + ⋯ + ( n − 1 ) + n 1+2+3+\cdots+(n-1)+n 1+2+3++(n1)+n 的值,其中正整数 n n n 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。

输入格式

输入一个正整数 n n n

输出格式

输出一个正整数,表示最后求和的答案。

样例 1

样例输入 1

100

样例输出 1

5050

提示

数据保证, 1 ≤ n ≤ 100 1 \leq n \leq 100 1n100

参考源码1:

n = int(input())
i = 1
sum = 0
while i <= n:sum += ii += 1
print(sum)

参考源码2:

n = int(input())
i = 1
sum = 0
while True:if i > n:breaksum += ii += 1
print(sum)

参考源码3:

n = int(input())
sum = 0
for i in range(1, n+1):sum += i
print(sum)

2. B2054:求平均年龄

题目描述

班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。

输入格式

第一行有一个整数 n n n 1 ≤ n ≤ 100 1 \le n \le 100 1n100),表示学生的人数。其后 n n n 行每行有 1 1 1 个整数,表示每个学生的年龄,取值为 15 15 15 25 25 25

输出格式

输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。

样例 1

样例输入 1

2
18
17

样例输出 1

17.50

参考源码:

n = int(input())
sum = 0
for i in range(n):x = int(input())sum += x
avg = sum / n
print(f'{avg:.2f}')

3. B2059:奇数求和

题目描述

计算非负整数 m m m n n n(包括 m m m n n n)之间的所有奇数的和,其中, m m m 不大于 n n n,且 n n n 不大于 300 300 300。例如 m = 3 , n = 12 , m=3,n=12, m=3,n=12, 其和则为: 3 + 5 + 7 + 9 + 11 = 35 3+5+7+9+11=35 3+5+7+9+11=35

输入格式

两个数 m m m n n n,两个数以一个空格分开,其中 0 ≤ m ≤ n ≤ 300 0 \le m \le n \le 300 0mn300

输出格式

输出一行,包含一个整数,表示 m m m n n n(包括 m m m n n n)之间的所有奇数的和。

样例 1

样例输入 1

7 15

样例输出 1

55

参考源码1:

m, n = map(int, input().split())
sum = 0
for i in range(m, n+1):if i % 2:  # 奇数求和sum += i
print(sum)

参考源码2:

m, n = map(int, input().split())
sum = 0
for i in range(m, n+1):if i % 2 == 0:  # 偶数不求和continuesum += i
print(sum)

参考源码3:

m, n = map(int, input().split())
list1 = [x for x in range(m, n+1) if x % 2 == 1]
print(sum(list1))

4. B2064:斐波那契数列

题目描述

斐波那契数列是指这样的数列:数列的第一个和第二个数都为 1 1 1,接下来每个数都等于前面 2 2 2 个数之和。
给出一个正整数 a a a,要求斐波那契数列中第 a a a 个数是多少。

输入格式

1 1 1 行是测试数据的组数 n n n,后面跟着 n n n 行输入。每组测试数据占 1 1 1 行,包括一个正整数 a a a 1 ≤ a ≤ 30 1 \le a \le 30 1a30)。

输出格式

输出有 n n n 行,每行输出对应一个输入。输出应是一个正整数,为斐波那契数列中第 a a a 个数的大小。

样例 1

样例输入 1

4
5
2
19
1

样例输出 1

5
1
4181
1

参考源码1:

n = int(input())
for i in range(n):k = int(input())s1 = 0  # 前一项s2 = 1  # 当前项for j in range(k-1):s1, s2 = s2, s1+s2# tmp = s1 + s2# s1 = s2# s2 = tmpprint(s2)

上述代码每次查询时,都要从头开始计算斐波那契数列的第k项,是不是太笨了?
本题中多次查询,查询的项不超过30,因此可以先求解出前30项,每次查询时直接输出即可。

参考源码2:

fib = [0, 1, 1]
for i in range(3, 31):fib.append(fib[i-1]+fib[i-2])
n = int(input())
for i in range(n):k = int(input())print(fib[k])

5. B2077:角谷猜想

题目描述

所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘 3 3 3 1 1 1,如果是偶数,则除以 2 2 2,得到的结果再按照上述规则重复处理,最终总能够得到 1 1 1。如,假定初始整数为 5 5 5,计算过程分别为 16 16 16 8 8 8 4 4 4 2 2 2 1 1 1
程序要求输入一个整数,将经过处理得到 1 1 1 的过程输出来。

输入格式

一个正整数 N ( N ≤ 2 , 000 , 000 ) N(N \le 2,000,000) N(N2,000,000)

输出格式

从输入整数到 1 1 1 的步骤,每一步为一行,每一部中描述计算过程。最后一行输出 End。如果输入为 1 1 1,直接输出 End

样例 1

样例输入 1

5

样例输出 1

5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End

参考源码:

n = int(input())
while n != 1:if n % 2 == 1:print(f'{n}*3+1={n*3+1}')n = n*3 + 1else:print(f'{n}/2={n//2}')n //= 2  # 注意!不能用/
print('End')

6. B2098:整数去重

题目描述

给定含有 n n n 个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。

输入格式

输入包含两行:
第一行包含一个正整数 n n n 1 ≤ n ≤ 20000 1 \le n \le 20000 1n20000),表示第二行序列中数字的个数;
第二行包含 n n n 个整数,整数之间以一个空格分开。每个整数大于等于 10 10 10 、小于等于 100 100 100

输出格式

输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。

样例 1

样例输入 1

5
10 12 93 12 75

样例输出 1

10 12 93 75

参考源码:

n = int(input())
list1 = list(map(int, input().split()))
list2 = []
for x in list1:if list2.count(x) == 0:list2.append(x)
print(*list2)

注意:本题要求去重后按照输入顺序输出,使用set去重,set是无序的,无法保证该顺序。

7. B2128:素数个数

题目描述

编程求 2 2 2 n ( n n(n n(n 为大于 2 2 2 的正整数)中有多少个素数。

输入格式

输入 n ( 2 ≤ n ≤ 50000 ) n(2 \le n \le 50000) n(2n50000)

输出格式

素数个数。

样例 1

样例输入 1

10

样例输出 1

4

参考源码:

素数是指除了1和自身之外,没有其它因子。素数测试最简单的方法是试除法,如果一个整数x是素数,则x除以区间[2,sqrt(x)]的任一个整数,均不能整除,如果有一个能够整除,则x不是素数。

n = int(input())
cnt = 0
for i in range(2, n+1):flag = Truefor j in range(2, int(i**0.5) + 1):if i % j == 0:flag = Falsebreakif flag:cnt += 1
print(cnt)

这篇关于第4周 Python程序流程控制刷题(循环结构)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838414

相关文章

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、