【Python练习题】Python小白必练100题答案-第21-40题

练习题直达链接
Python小白必练100题答案-第1-20题点我直达
Python小白必练100题答案-第21-40题点我直达
Python小白必练100题答案-第41-60题点我直达
Python小白必练100题答案-第61-80题点我直达
Python小白必练100题答案-第81-97题点我直达

目录

    • 专栏导读
    • 循环结构 + 字符串操作
    • 第三部分:循环结构 (21-30题)
      • 21. 数字累加
      • 22. 乘法表
      • 23. 阶乘计算
      • 24. 斐波那契数列
      • 25. 素数判断
      • 26. 猜数字游戏
      • 27. 水仙花数
      • 28. 倒序输出
      • 29. 数字统计
      • 30. 完数判断
    • 第四部分:字符串操作 (31-40题)
      • 31. 字符串长度
      • 32. 字符串反转
      • 33. 回文判断
      • 34. 字符统计
      • 35. 大小写转换
      • 36. 单词计数
      • 37. 字符串查找
      • 38. 字符串替换
      • 39. 首字母大写
      • 40. 去除空格
    • 总结
      • 循环结构 (21-30题)
      • 字符串操作 (31-40题)

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

循环结构 + 字符串操作


第三部分:循环结构 (21-30题)

21. 数字累加

题目: 计算1到100的和

答案:

def sum_1_to_100():total = 0for i in range(1, 101):total += ireturn totalresult = sum_1_to_100()
print(f"1到100的和:{result}")
# 验证公式:n*(n+1)/2
print(f"公式验证:{100*101//2}")

输出:

1到100的和:5050
公式验证:5050

22. 乘法表

题目: 输出九九乘法表

答案:

def multiplication_table():for i in range(1, 10):for j in range(1, i+1):print(f"{j}×{i}={i*j}", end="\t")print()  # 换行print("九九乘法表:")
multiplication_table()

输出:

九九乘法表:
1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
1×4=4	2×4=8	3×4=12	4×4=16	
...

23. 阶乘计算

题目: 计算数字的阶乘

答案:

def factorial(n):if n <= 1:return 1result = 1for i in range(2, n+1):result *= ireturn resulttest_nums = [5, 0, 1, 7]
for num in test_nums:print(f"{num}! = {factorial(num)}")

输出:

5! = 120
0! = 1
1! = 1
7! = 5040

24. 斐波那契数列

题目: 生成斐波那契数列

答案:

def fibonacci(n):if n <= 0:return []elif n == 1:return [0]elif n == 2:return [0, 1]fib_list = [0, 1]for i in range(2, n):fib_list.append(fib_list[i-1] + fib_list[i-2])return fib_listn = 10
fib_sequence = fibonacci(n)
print(f"斐波那契数列前{n}项:{fib_sequence}")

输出:

斐波那契数列前10项:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

25. 素数判断

题目: 判断一个数是否为素数

答案:

import mathdef is_prime(n):if n < 2:return Falsefor i in range(2, int(math.sqrt(n)) + 1):if n % i == 0:return Falsereturn Truetest_nums = [2, 3, 4, 17, 25, 29]
for num in test_nums:result = "是" if is_prime(num) else "不是"print(f"{num} {result}素数")

输出:

2 是素数
3 是素数
4 不是素数
17 是素数
25 不是素数
29 是素数

26. 猜数字游戏

题目: 实现猜数字游戏

答案:

import randomdef guess_number_game():target = random.randint(1, 100)print(f"计算机生成的数字是:{target}(实际游戏中不显示)")# 模拟几次猜测guesses = [50, 75, 88, target]  # 模拟猜测过程attempts = 0for guess in guesses:attempts += 1if guess == target:print(f"第{attempts}次猜测:{guess} - 恭喜!猜对了!")breakelif guess < target:print(f"第{attempts}次猜测:{guess} - 太小了!")else:print(f"第{attempts}次猜测:{guess} - 太大了!")guess_number_game()

输出:

计算机生成的数字是:92(实际游戏中不显示)
第1次猜测:50 - 太小了!
第2次猜测:75 - 太小了!
第3次猜测:88 - 太小了!
第4次猜测:92 - 恭喜!猜对了!

27. 水仙花数

题目: 找出所有三位水仙花数

答案:

def find_narcissistic_numbers():narcissistic_nums = []for num in range(100, 1000):digits = [int(d) for d in str(num)]if sum(d**3 for d in digits) == num:narcissistic_nums.append(num)return narcissistic_numsnarcissistic_nums = find_narcissistic_numbers()
print(f"所有三位水仙花数:{narcissistic_nums}")

输出:

所有三位水仙花数:[153, 371, 407]

28. 倒序输出

题目: 将数字倒序输出

答案:

def reverse_number(n):reversed_num = 0while n > 0:reversed_num = reversed_num * 10 + n % 10n //= 10return reversed_numtest_nums = [12345, 6789, 100]
for num in test_nums:print(f"{num} 倒序后:{reverse_number(num)}")

输出:

12345 倒序后:54321
6789 倒序后:9876
100 倒序后:1

29. 数字统计

题目: 统计数字中各位数字出现的次数

答案:

def count_digits(n):digit_count = {}for digit in str(n):digit_count[digit] = digit_count.get(digit, 0) + 1return digit_counttest_nums = [112233, 123321, 555666]
for num in test_nums:counts = count_digits(num)print(f"{num} 各数字出现次数:{counts}")

输出:

112233 各数字出现次数:{'1': 2, '2': 2, '3': 2}
123321 各数字出现次数:{'1': 2, '2': 2, '3': 2}
555666 各数字出现次数:{'5': 3, '6': 3}

30. 完数判断

题目: 判断完数并找出范围内的所有完数

答案:

def is_perfect_number(n):if n <= 1:return Falsedivisors_sum = 0for i in range(1, n):if n % i == 0:divisors_sum += ireturn divisors_sum == ndef find_perfect_numbers(limit):perfect_nums = []for num in range(1, limit + 1):if is_perfect_number(num):perfect_nums.append(num)return perfect_numsperfect_nums = find_perfect_numbers(1000)
print(f"1000以内的完数:{perfect_nums}")

输出:

1000以内的完数:[6, 28, 496]

第四部分:字符串操作 (31-40题)

31. 字符串长度

题目: 计算字符串长度(不使用内置函数)

答案:

def string_length(s):count = 0for char in s:count += 1return counttest_strings = ["Hello", "Python编程", ""]
for s in test_strings:print(f"'{s}' 长度:{string_length(s)} (内置函数验证:{len(s)})")

输出:

'Hello' 长度:5 (内置函数验证:5)
'Python编程' 长度:8 (内置函数验证:8)
'' 长度:0 (内置函数验证:0)

32. 字符串反转

题目: 反转字符串

答案:

def reverse_string(s):reversed_str = ""for char in s:reversed_str = char + reversed_strreturn reversed_strtest_strings = ["Hello", "Python", "12345"]
for s in test_strings:print(f"'{s}' 反转后:'{reverse_string(s)}'")

输出:

'Hello' 反转后:'olleH'
'Python' 反转后:'nohtyP'
'12345' 反转后:'54321'

33. 回文判断

题目: 判断字符串是否为回文

答案:

def is_palindrome(s):# 转换为小写并去除空格s = s.lower().replace(" ", "")return s == s[::-1]test_strings = ["level", "hello", "A man a plan a canal Panama", "race a car"]
for s in test_strings:result = "是" if is_palindrome(s) else "不是"print(f"'{s}' {result}回文")

输出:

'level' 是回文
'hello' 不是回文
'A man a plan a canal Panama' 是回文
'race a car' 不是回文

34. 字符统计

题目: 统计字符串中字母、数字、空格和其他字符的个数

答案:

def count_characters(s):letters = 0digits = 0spaces = 0others = 0for char in s:if char.isalpha():letters += 1elif char.isdigit():digits += 1elif char.isspace():spaces += 1else:others += 1return letters, digits, spaces, otherstest_string = "Hello World 123 !"
letters, digits, spaces, others = count_characters(test_string)
print(f"字符串:'{test_string}'")
print(f"字母:{letters}个,数字:{digits}个,空格:{spaces}个,其他:{others}个")

输出:

字符串:'Hello World 123 !'
字母:10个,数字:3个,空格:3个,其他:1个

35. 大小写转换

题目: 将字符串中的大小写字母互换

答案:

def swap_case(s):result = ""for char in s:if char.isupper():result += char.lower()elif char.islower():result += char.upper()else:result += charreturn resulttest_strings = ["Hello World", "PyThOn ProGramming"]
for s in test_strings:print(f"'{s}' -> '{swap_case(s)}'")

输出:

'Hello World' -> 'hELLO wORLD'
'PyThOn ProGramming' -> 'pYtHoN pROgRAMMING'

36. 单词计数

题目: 统计字符串中单词的个数

答案:

def count_words(text):words = text.split()return len(words)test_texts = ["Hello world","Python is a great programming language","   Multiple   spaces   between   words   "
]
for text in test_texts:print(f"'{text}' 包含 {count_words(text)} 个单词")

输出:

'Hello world' 包含 2 个单词
'Python is a great programming language' 包含 6 个单词
'   Multiple   spaces   between   words   ' 包含 4 个单词

37. 字符串查找

题目: 查找子字符串在主字符串中的所有位置

答案:

def find_substring(text, substring):positions = []start = 0while True:pos = text.find(substring, start)if pos == -1:breakpositions.append(pos)start = pos + 1return positionstext = "hello world hello python hello"
substring = "hello"
positions = find_substring(text, substring)
print(f"在 '{text}' 中查找 '{substring}'")
print(f"找到位置:{positions}")

输出:

在 'hello world hello python hello' 中查找 'hello'
找到位置:[0, 12, 25]

38. 字符串替换

题目: 替换字符串中的指定字符

答案:

def replace_char(text, old_char, new_char):result = ""for char in text:if char == old_char:result += new_charelse:result += charreturn resulttext = "hello world"
old_char = "l"
new_char = "x"
result = replace_char(text, old_char, new_char)
print(f"'{text}' 将 '{old_char}' 替换为 '{new_char}': '{result}'")

输出:

'hello world' 将 'l' 替换为 'x': 'hexxo worxd'

39. 首字母大写

题目: 将字符串中每个单词的首字母大写

答案:

def capitalize_words(text):words = text.split()capitalized_words = []for word in words:if word:capitalized_word = word[0].upper() + word[1:].lower()capitalized_words.append(capitalized_word)return " ".join(capitalized_words)test_texts = ["hello world","python programming language","tHiS iS a TeSt"
]
for text in test_texts:print(f"'{text}' -> '{capitalize_words(text)}'")

输出:

'hello world' -> 'Hello World'
'python programming language' -> 'Python Programming Language'
'tHiS iS a TeSt' -> 'This Is A Test'

40. 去除空格

题目: 去除字符串首尾的空格

答案:

def strip_spaces(text):# 去除首尾空格start = 0end = len(text) - 1# 找到第一个非空格字符while start < len(text) and text[start] == ' ':start += 1# 找到最后一个非空格字符while end >= 0 and text[end] == ' ':end -= 1if start > end:return ""return text[start:end+1]test_texts = ["   hello world   ","  python  ","   ","no spaces"
]
for text in test_texts:stripped = strip_spaces(text)print(f"'{text}' -> '{stripped}' (长度:{len(text)} -> {len(stripped)})")

输出:

'   hello world   ' -> 'hello world' (长度:17 -> 11)
'  python  ' -> 'python' (长度:10 -> 6)
'   ' -> '' (长度:3 -> 0)
'no spaces' -> 'no spaces' (长度:9 -> 9)

总结

第21-40题主要涵盖了Python的进阶知识:

循环结构 (21-30题)

  • 基础循环:for循环、while循环的使用
  • 数学计算:累加、阶乘、斐波那契数列
  • 算法应用:素数判断、水仙花数、完数
  • 数字处理:倒序、数字统计
  • 游戏编程:猜数字游戏的实现

字符串操作 (31-40题)

  • 基础操作:长度计算、反转、大小写转换
  • 字符分析:字符统计、回文判断
  • 文本处理:单词计数、查找替换
  • 格式化:首字母大写、去除空格
  • 算法思维:字符串搜索和处理算法

这些知识点为后续学习数据结构、算法和更复杂的编程概念打下了坚实的基础!

  • 希望对初学者有帮助;致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【❤️一个免费关注❤️】感谢!

  • 求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

添加⽂件--场景⼆

添加⽂件–场景⼆ 学习到这⾥&#xff0c;我们已经清楚了如何向仓库中添加⽂件&#xff0c;并且对于⼯作区、暂存区、版本库也有了⼀定的认识。那么我们再展⽰⼀种添加⽂件的场景&#xff0c;能加深对⼯作区、暂存区、版本库的理解&#xff0c;⽰例如下&#xff1a; roothcss-e…

华为网路设备学习-31(BGP协议 六)

BGP路由属性的几种常见使用方法&#xff1a; 29章是 BGP路由汇总 与 as-path-filter&#xff08;正则表达式&#xff09; 30章是 Community 的使用方法 本章是 ip前缀列表ip-prefix 、 路由过滤 filter-policy 和路由策略 route-policy 一、在BGP中的 ip前缀列表&#xf…

Windows PostgreSQL JDBC驱动安装包位置

要在Windows系统上获取PostgreSQL JDBC驱动安装包&#xff08;后缀为.jar的文件&#xff09;&#xff0c;可通过以下官方及常用渠道获取&#xff0c;具体位置如下&#xff1a; ###&#x1f527; 1. 官方网站下载&#xff08;推荐&#xff09; 下载地址&#xff1a;https://jdb…

机器学习从入门到精通 - 聚类算法大比拼:K-Means、DBSCAN实战与评估陷阱

机器学习从入门到精通 - 聚类算法大比拼&#xff1a;K-Means、DBSCAN实战与评估陷阱 开场白&#xff1a;推开无监督学习的大门 朋友们&#xff0c;不知道你们有没有对着堆积如山、没有标签的数据发过愁&#xff1f;想从里面找出点规律&#xff0c;分组什么的&#xff0c;结果发…

AI 重构内容创作:从文案生成到视频剪辑,创作者该如何与 AI 协同共生?

一、引言&#xff1a;AI 掀起内容创作的 “重构浪潮”​行业现象引入&#xff1a;列举 AI 在内容创作领域的爆发式应用案例&#xff08;如某平台 AI 文案工具日生成量破百万、AI 视频剪辑软件用户增长超 300%&#xff09;​创作者需求变化&#xff1a;通过调研数据说明创作者对…

后端一次性返回十万条数据时,前端需要采用多种性能优化策略来避免页面卡顿

当后端一次性返回十万条数据时&#xff0c;前端需要采用多种性能优化策略来避免页面卡顿。以下是主要的优化方案&#xff1a; 分页加载 - 将数据分批次加载显示虚拟滚动 - 只渲染可视区域内的数据数据懒加载 - 按需加载数据Web Workers - 在后台线程处理数据时间切片 - 分散渲染…

基于-轻量级文档搜索系统的测试报告

文章目录一、项目背景二、项目功能三、测试计划&#xff08;一&#xff09;测试用例设计&#xff08;二&#xff09;测试用例实现1.功能测试2.界面测试3.兼容性测试4.易用性测试5.安全性测试一、项目背景 1.基于轻量级文档检索系统采用C技术栈来实现&#xff0c;同时使用了本地…

编辑器vim(Linux)

Linux下开发工具是独立的写代码——编辑器 vim编译代码——gcc/g调试——gdb、cgdb构建工具——makefile、make、cmakevim只用来写代码注意&#xff1a;直接用vim打开一个不存在的文件并保存退出&#xff0c;就会自动生成该文件vim有多种模式命令模式&#xff08;Normal Mode&a…

GitLab,2025最新如何配置中的SSH key步骤

电脑右键先检查&#xff0c;是否有公钥 git cat ~/.ssh/id_rsa.pub下面是有&#xff0c;不用生成公钥&#xff0c;没有就要生成生成本地电脑公钥, 建议用第二种 //第一种ssh-keygen -t rsa//第二种------- 1.打开git bash,输入&#xff1a;ssh-keygen -t rsa -C “你的邮箱”ss…

华为HCIE证书多久续一次费?费用多少?

根据华为官方政策&#xff0c;华为认证HCIE的有效期为3年&#xff0c;有效期自证书正式发放之日起计算&#xff0c;考生可通过华为人才在线官网登录个人账号&#xff0c;在“我的证书”栏目中查询具体有效期起止时间。一、HCIE证书到期后的续证方式 1.重考对应HCIE的认证考试&a…

提升文本到图像强化学习稳定性:Pref - GRPO算法如何革新图像生成?

提升文本到图像强化学习稳定性&#xff1a;Pref - GRPO算法如何革新图像生成&#xff1f; 在文本到图像生成领域&#xff0c;强化学习正重塑着模型与人类偏好的对齐方式。本文聚焦于一种创新的基于成对偏好奖励的GRPO方法&#xff08;Pref - GRPO&#xff09;&#xff0c;它通…

Linux UDisks守护进程曝本地提权漏洞CVE-2025-8067,PoC已发布

漏洞概述安全研究人员在Linux环境中广泛使用的磁盘管理组件UDisks守护进程中&#xff0c;发现了一个严重漏洞&#xff08;编号CVE-2025-8067&#xff0c;CVSS评分8.5&#xff09;。该漏洞已报告给红帽产品安全团队&#xff0c;并在UDisks更新版本中得到修复。技术细节该漏洞存在…

uniapp 开发上架 iOS App全流程

操作文档网址&#xff1a;https://ask.dcloud.net.cn/article/152 操作学习视频地址&#xff1a;uniapp打包上线微信小程序、安卓、IOS流程_哔哩哔哩_bilibili 第一步&#xff1a;注册苹果 iOS 个人开发者账号 费用说明 ‌个人开发者账号‌&#xff1a;适用于独立开发者或小…

Sqlsugar补充自定义模板

DBFirst默认创建所有实体CreateClassFile()的第二个参数为生成实体类命名空间//.net6以下 db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\1", "Models"); //.net6以上 string加? db.DbFirst.IsCreateAttribute().StringNullable().CreateCl…

LeetCode 392.判断子序列

给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一个子序列&#x…

逻辑回归:从原理到实战的完整指南

在机器学习中&#xff0c;分类任务是最常见的应用场景之一。而逻辑回归&#xff08;Logistic Regression&#xff09;&#xff0c;尽管名字中有“回归”&#xff0c;实际上是一种非常强大且广泛应用的二分类模型。它简单、高效、可解释性强&#xff0c;是数据科学初学者入门分类…

鸿蒙搭配前端开发:应用端与WEB端交互

鸿蒙系统&#xff08;HarmonyOS&#xff09;是华为开发的一款面向全场景的分布式操作系统&#xff0c;其设计初衷是为了适应物联网时代的需求&#xff0c;旨在构建一个统一的操作系统&#xff0c;支持多种设备的无缝协同工作。其分布式开发的一些主要优势&#xff1a; 跨设备协…

配置sscms时被sql server处处刁难

今天要记下来的是一个小例子。接前面&#xff0c;当我终于完成sql server的安装时&#xff0c;才发现要填写sscms的两个空是有多么艰难。首先安装sql server2016出现了太多环境不兼容的问题&#xff0c;让我只好退而安装sql server2012。安装sql server2012时其实是可以避坑的&…

【Flink】DataStream API:源算子、数据类型

目录源算子&#xff08;Source&#xff09;从集合中读取数据从文件读取数据从Socket读取数据从Kafka读取数据从数据生成器读取数据Flink支持的数据类型Flink的类型系统Flink支持的数据类型类型提示&#xff08;Type Hints&#xff09;源算子&#xff08;Source&#xff09; Fli…

Linux 安装docker-compose安装方法(安装docker compose安装)

文章目录**方法一&#xff1a;通过 curl 下载二进制文件&#xff08;推荐&#xff09;**1. 安装前准备- **确保已安装 Docker**- **检查 Docker 是否安装成功**2. 下载并安装 Docker Compose- **下载最新版本的 Docker Compose 二进制文件**- **国内加速下载&#xff08;解决 G…