当前位置: 首页 > news >正文

Python刷题:流程控制(下)

今天刷的是PythonTip的Python 入门挑战中的题,整体难度不高,适合小白练手以及巩固知识点。下面会进行详细讲解。


每日一句

在无人问津的角落里,

默默努力的人独自发光,

孤独是他们奋斗路上的常客,

却也是成就他们的力量。


21.自然数求和

写一个程序来:计算前N个自然数的总和。

  • 获取一个变量 n 的整数输入。
  • 运行一个从 1 到 n 的循环。
  • 在这个循环中,计算从1到 n 的所有数字的总和。
  • 打印结果。

输入格式:一个整数

解析:

第一步:获取输入

1.使用 input() 函数从用户处获取一个输入,表示一个整数 n

2.由于输入的是字符串,将其转换为整数类型,存储在 n 变量中。这是因为我们要对 n 进行计数操作,使用整数可以精确表示数量。

第二步:计算总和

1.初始化一个变量 sum_total 为 0,用于存储从 1 到 n 的数字总和。

2.使用 for 循环从 1 迭代到 n,可以使用 for i in range(1, n + 1) 这样的语句,其中 i 是迭代变量,range(1, n + 1) 会生成从 1 到 n 的整数序列(包括 1 和 n)。

3.在 for 循环内部,将 i 的值累加到 sum_total 中。每次迭代,sum_total 的值会更新为其原有的值加上当前迭代变量 i 的值,实现求和操作。

第三步:输出结果

使用 print() 函数将存储在 sum_total 中的总和结果打印出来,以便用户查看从 1 到 n 的自然数总和。

代码如下:

n = int(input())# 初始化累加器
add = 0# 循环
for i in range (1,n+1):# 增加i到累加器add = add + i# 打印结果
print(add)

22.一个整数的所有因子

写一个程序: 打印出一个数字的所有因子。

  • 获取一个整数输入并将其分配给number变量。
  • 创建一个 "for" 循环,从1到 number 进行循环。
  • 在这个循环中,检查number是否能完全被i整除(余数0)。
  • 如果是,则打印i的值。

输入格式:一个正整数

解析:

第一步:获取输入

1.使用 input() 函数从用户处获取一个输入,表示一个整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 number 变量中。因为我们要对这个数字进行因子的计算,使用整数类型可以确保计算的准确性。

第二步:创建并执行 for 循环

1.使用 for 循环从 1 迭代到 number。可以使用 for i in range(1, number + 1) 这样的语句,其中 i 是迭代变量,range(1, number + 1) 会生成从 1 到 number 的整数序列(包括 1 和 number)。

2.在 for 循环内部,检查 number 是否能被 i 整除,也就是计算 number 除以 i 的余数是否为 0。可以使用取余运算符 % 来计算余数,即 number % i == 0

第三步:输出因子

如果 number 除以 i 的余数为 0,说明 i 是 number 的一个因子,使用 print() 函数将 i 的值打印出来,这样就可以找到并输出 number 的所有因子。

代码如下:

number = int(input())# 循环
for i in range (1,number+1): # 判断i是否能整除 number# 如果是,打印iif number % i == 0:print(i)

23.判断质数

写一个程序: 判断一个数字是否是质数。

质数是一个只能被1或其本身整除的数字。例如,7519,等等。

  • 输入一个数字并赋值给变量 number
  • 判断number 能否被从2到number的某一个数字整除。
  • 如果该数可以被除,则打印 "不是质数"。否则,打印 "质数"。

输入格式:一个整数

解析:

第一步:获取输入

1.使用 input() 函数从用户处获取一个输入,表示一个整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 number 变量中。这是因为我们要对这个数字进行质数的判断,使用整数类型便于后续的整除运算。

第二步:判断是否为质数

1.首先,考虑特殊情况,如果 number 小于等于 1,它不是质数,直接打印 "不是质数"

2,.对于 number 大于 1 的情况,使用 for 循环从 2 迭代到 number - 1。可以使用 for i in range(2, number) 这样的语句,其中 i 是迭代变量,range(2, number) 会生成从 2 到 number - 1 的整数序列(包括 2 但不包括 number)。

3.在 for 循环内部,检查 number 是否能被 i 整除,也就是计算 number 除以 i 的余数是否为 0。可以使用取余运算符 % 来计算余数,即 number % i == 0

4.如果 number 除以 i 的余数为 0,说明 number 能被 i 整除,那么它不是质数,使用 print() 函数打印 "不是质数",并使用 break 语句终止循环,因为已经确定该数不是质数,无需继续检查。

5.如果 for 循环正常结束(即没有被 break),说明 number 不能被 2 到 number - 1 中的任何数整除,它是质数,使用 print() 函数打印 "质数"

代码如下:

number = int(input())# 标记number是否为质数,0是,1 不是
flag = 0# 创建一个2到`number`的循环。不包括`number`。
for i in range (2,number):# 判断循环过程的数是否能被`number`整除。# 如果是,则设置标志位,表明不是质数if number % i ==0:flag = 1# 打印是否是质数。
if flag == 0:print("质数")
else:print("不是质数")

24.一个整数有多少位?

编写一个程序来计算一个数字的位数。

  • 输入一个整数并存储在number变量中。
  • 创建一个整数变量count并将数值0赋给它。
  • 创建一个while循环,只要number不等于0就循环。
  • 循环中,每次可以将number整除10,得到商,从而去掉最后一个数字。
  • count增加1
  • 在循环外,打印count的值。

假设: 假设用户总是输入一个正数。

输入格式:一个整数

解析:

第一步:获取输入

1,.使用 input() 函数从用户处获取一个输入,表示一个整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 number 变量中。这是因为我们要对该数字进行位数的计算,使用整数便于后续的数学运算。

第二步:初始化计数器

创建一个整数变量 count 并将其初始化为 0。这个变量将用于计数数字的位数。

第三步:使用 while 循环计算位数

1.使用 while 循环,只要 number 不等于 0 就执行循环体。

2.在循环内部,将 number 除以 10 取整(使用 // 运算符),得到的商存储回 number 变量中。这样每次循环会去掉 number 的最后一位数字。

3.每次循环时,将 count 的值加 1,用于记录数字的位数。

第四步:输出结果

在 while 循环结束后,使用 print() 函数将 count 的值打印出来,显示输入数字的位数。

代码如下:

number = int(input())count = 0# 如果number不等于0,就循环。
while number != 0:# 除以10。number = number // 10# 位数增加1count += 1# 打印结果
print(count)

25.不要3的倍数

写一个程序:打印从1n的所有数字,除了3的倍数。

  • 运行一个从i = 1nfor循环。
  • 检查 i是否能完全被3整除。
  • 如果i能被3整除,跳过这个循环,进入下一个迭代。
  • 打印i的值。

输入格式:一个整数

解析:

第一步:获取输入

1.使用 input() 函数从用户处获取一个输入,表示一个整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 n 变量中。因为我们要确定打印数字的范围,使用整数类型可以准确表示范围的上限。

第二步:创建并执行 for 循环

1.使用 for 循环从 1 迭代到 n。可以使用 for i in range(1, n + 1) 这样的语句,其中 i 是迭代变量,range(1, n + 1) 会生成从 1 到 n 的整数序列(包括 1 和 n)。

第三步:检查并处理数字

1.在 for 循环内部,使用取余运算符 % 来检查 i 是否能被 3 整除,即 i % 3 == 0

2.如果 i 能被 3 整除,使用 continue 语句跳过当前迭代,直接进入下一个迭代,不执行后续的打印操作。

3.如果 i 不能被 3 整除,使用 print() 函数将 i 的值打印出来,这样就可以打印出从 1 到 n 中除了 3 的倍数以外的所有数字。

代码如下:

n = int(input())# 循环
for i in range (1, n+1):# 是否能被3整除if i % 3 == 0:# 如果是,跳过continue# 打印print(i)

26.直到用户输入0

写一个程序:打印数字,直到用户输入0则停止。

  • 运行一个始终为 True 的 while 循环。
  • 在这个循环中,用户输入一个整数值,并把它存储在number变量中。
  • 判断该值是否为0
  • 如果输入值是0,则终止循环。
  • 否打印所有 number的值。

输入格式:多个整数

解析:

第一步:设置循环

使用 while True 创建一个无限循环,因为要持续接收用户输入,直到输入为 0 才停止。

第二步:获取用户输入

1.在 while 循环内部,使用 input() 函数从用户处获取一个输入,表示一个整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 number 变量中。这是为了对用户输入的数字进行判断和处理。

第三步:检查输入并处理

1.使用 if 语句检查 number 的值是否为 0。

2.如果 number 为 0,使用 break 语句终止 while 循环,因为输入为 0 时程序应该停止接收和打印数字。

3.如果 number 不为 0,使用 print() 函数将 number 的值打印出来,以显示用户输入的非零数字。

代码如下:

# 一直为真的循环
while True:# 输入一个数字number = int(input())# 如果是0停止循环if number == 0:break# 打印数字print(number)

27.打印正整数

编写一个程序:打印正整数数字。

  • 运行一个条件为真的循环while True:
  • 在每次循环中,输入一个整数值,并将其存储在number变量中。
  • 检查number是否小于0。如果是,跳过当前迭代。
  • 检查number是否等于0。如果是,终止循环。
  • 如果用户输入的是一个正数,打印所有number的值。

输入格式:多个整数

解析:

第一步:设置循环

使用 while True 创建一个无限循环,因为程序需要不断接收用户的输入,直到满足终止条件。

第二步:获取用户输入

1.在 while 循环内部,使用 input() 函数从用户处获取一个输入,表示一个整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 number 变量中。这样做是为了方便后续对输入数字进行大小比较和其他处理。

第三步:检查输入数字并进行相应处理

1.使用 if 语句检查 number 是否小于 0。

2.如果 number 小于 0,使用 continue 语句跳过当前迭代,直接进入下一次迭代,不进行后续的操作。

3.使用另一个 if 语句检查 number 是否等于 0。

4.如果 number 等于 0,使用 break 语句终止 while 循环,因为当输入为 0 时,程序需要停止运行。

5.如果 number 是正数(既不小于 0 也不等于 0),使用 print() 函数将 number 的值打印出来,这样用户输入的正整数将被输出。

代码如下:

# 一直为真的循环
while True:# 输入一个数字number = int(input())# 判断是否小于0if number < 0 :continue# 判断是否等于0if number == 0 :break# 打印数字print(number)

28.斐波那契数列

写一个程序:打印斐波那契数列。

提示:斐波那契数列是一系列的数字,其中下一个数字是前面两个数字的和。例如:

1 1 2 3 5 8 ...

任务:

  • 输入一个整数,并将其存储在n中。
  • 定义两个整数变量t1t2,其值均为1
  • 使用一个for循环,从i = 1n,包括n进行循环。
  • 在每个循环中
    1. 打印t1的值。
    2. 定义 result 为 t1 和 t2 之和。
    3. 将 t2 的值分配给 t1
    4. 将 result 的值分配给 t2

输入格式:一个正整数

解析:

第一步:获取输入

1.使用 input() 函数从用户处获取一个输入,表示一个正整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 n 变量中。这是因为 n 将决定斐波那契数列的长度,使用整数可以精确表示数列的项数。

第二步:初始化变量

1.定义两个整数变量 t1 和 t2,并将它们的值初始化为 1。这是斐波那契数列的前两项,后续的项将基于这两项计算得出。

第三步:使用 for 循环生成斐波那契数列

1.使用 for 循环从 1 迭代到 n。可以使用 for i in range(1, n + 1) 这样的语句,其中 i 是迭代变量,range(1, n + 1) 会生成从 1 到 n 的整数序列(包括 1 和 n)。

2.在 for 循环内部:

(1).首先,使用 print() 函数打印 t1 的值,因为 t1 是当前斐波那契数列的项。

(2).计算 result,它是 t1 和 t2 的和,使用 result = t1 + t2

(3).将 t2 的值赋给 t1,这是将当前项更新为前一项,为下一个数的计算做准备。

(4).将 result 的值赋给 t2,这是将 result 作为下一项的计算结果存储起来,用于下一次迭代。

代码如下:

n = int(input())
t1 = 1
t2 = 1
result = 0# 1到n的循环
for i in range(1,n+1):# 打印t1print(t1)# 定义result为t1和t2之和result = t1 + t2# 将 `t2` 的值分配给 `t1`t1 = t2# 将 `result` 的值分配给 `t2`t2 = result

29.打印小于n的斐波那契数

写一个程序:打印所有小于n的斐波那契数。

提示: 斐波那契数列是一系列的数字,其中一个数字是最后两个数字的相加。比如说:

1 1 2 3 5 ...

任务

  • 接受用户的整数输入,并将其存储在n中。
  • 定义两个整数变量t1t2,其值均为1
  • t1小于n时,运行循环。
  • 在每个循环中,打印t1的值。
  • 同时,定义result 变量为t1t2之和。
  • t2的值分配给t1
  • 将 result 的值分配给 t2

输入格式:一个正整数

解析:

第一步:获取输入

1.使用 input() 函数从用户处获取一个输入,表示一个正整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 n 变量中。因为我们要根据这个数字 n 来确定打印斐波那契数的范围,使用整数可以更准确地进行比较和计算。

第二步:初始化变量

定义两个整数变量 t1 和 t2,并将它们的值初始化为 1。这是斐波那契数列的前两项,后续的项将基于这两项计算得出。

第三步:使用循环打印小于 n 的斐波那契数

1.使用 while 循环,循环条件为 t1 < n。只要 t1 的值小于 n,就会一直执行循环。

2.在 while 循环内部:

(1).首先,使用 print() 函数打印 t1 的值,因为 t1 是当前斐波那契数。

(2).计算 result,它是 t1 和 t2 的和,使用 result = t1 + t2

(3).将 t2 的值赋给 t1,这是将当前项更新为前一项,为下一个数的计算做准备。

(4).将 result 的值赋给 t2,这是将 result 作为下一项的计算结果存储起来,用于下一次迭代。

代码如下:

n = int(input())
t1 = 1
t2 = 1
result = 0#循环
while t1 < n:# 打印t1print(t1)# 定义result 为t1和t2之和result = t1 +t2# 将t2的值分配给t1t1 =t2# 将result的值分配给t2t2 = result

30.判断完全平方数

写一个程序:判断一个数字是否是完全平方数。

  • 导入math模块。
  • 获取一个整数输入,并存储在number变量中。
  • 使用sqrt()函数找到该数字的平方根,并将其分配给square_root变量。
  • 使用%运算符得对1取余,计算出的平方根的余数,并把它赋给check_remainder
  • 如果余数等于0,打印 完全平方数
  • 否则打印非完全平方数

输入格式:一个整数

解析:

第一步:导入模块

首先,使用 import math 导入 math 模块。这个模块提供了许多数学函数,其中 sqrt() 函数将用于计算数字的平方根。

第二步:获取输入

1.使用 input() 函数从用户处获取一个输入,表示一个整数。

2.由于输入的是字符串,将其转换为整数类型,存储在 number 变量中。这是因为我们要对这个数字进行完全平方数的判断,使用整数类型可以保证计算的准确性。

第三步:计算平方根并检查余数

1.使用 math.sqrt() 函数计算 number 的平方根,并将结果存储在 square_root 变量中。

2.使用取余运算符 % 计算 square_root 对 1 取余的结果,并将其存储在 check_remainder 变量中。

第四步:判断并输出结果

1.使用 if 语句检查 check_remainder 是否等于 0。

2.如果 check_remainder 等于 0,说明 number 是完全平方数,使用 print() 函数打印 "完全平方数"

3.否则,说明 number 不是完全平方数,使用 print() 函数打印 "非完全平方数"

代码如下:

# 导入math模块
import mathnumber = int(input())# 计算平方根
square_root = math.sqrt(number)# 对1取余
check_remainder = number % square_root# 如果余数等于0,打印"完全平方数";否则打印"非完全平方数"
if check_remainder == 0:print("完全平方数")
else:print("非完全平方数")

总结

以上这些题目极为基础,对于语法学习尚处入门阶段的小白而言,是检测自身语法是否达标的理想之选。

持续更新~

相关文章:

  • 基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究
  • Java开发经验——ali编码规范经验总结
  • 【Mytais系列】Type模块:源码
  • centos7.0无法安装php8.2/8.3
  • 【大模型面试每日一题】Day 7:为什么大模型训练选择 Adam 而非 SGD?Adam 的关键改进是什么?
  • 使用PageHelper实现分页查询(详细)
  • LangChain:重构大语言模型应用开发的范式革命
  • 游戏引擎学习第255天:构建配置树
  • 定时器6计时功能
  • 【算法基础】插入排序算法 - JAVA
  • 【计算机视觉】目标检测:yoloV1~yoloV11项目论文及对比
  • SQL中的Subquery CTE Temporary Table 区别
  • Milvus(12):分析器
  • firewall docker 冲突问题解决(亲测有效)
  • C++ STL vector高级特性与实战技巧
  • STM32 DMA直接存储器存取
  • 利用Elixir中的原子特性 + 错误消息泄露 -- Atom Bomb
  • 手写 Vue 源码 === 搭建 Monorepo 环境
  • Webug4.0靶场通关笔记10- 第14关链接注入
  • 【Hot 100】 146. LRU 缓存
  • 重庆动物园大熊猫被游客扔玻璃瓶,相同地方曾被扔可乐瓶
  • 个人住房公积金贷款利率下调,100万元30年期贷款总利息将减少近5万元
  • 抗战回望19︱《中国工程师学会四川考察团报告》:“将来重工业所在,以四川为最适宜之地点”
  • 台湾花莲县海域发生5.7级地震,震源深度15公里
  • 国铁:今天预计发送旅客2110万人次,加开列车1896列
  • 新华社:让历史照鉴未来