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

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

练习题直达链接
Python小白必练100题答案-第1-20题点我直达
Python小白必练100题答案-第41-60题点我直达

目录

    • 专栏导读
    • 循环结构 + 字符串操作
    • 第三部分:循环结构 (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.xdnf.cn/news/1427095.html

相关文章:

  • 基础思想:动态规划与贪心算法
  • [Dify 专栏] 如何通过 Prompt 在 Dify 中模拟 Persona:即便没有专属配置,也能让 AI 扮演角色
  • 文章阅读与实践 - 延迟双删/分库分表/Spring IOC生命周期/Mysql主从一致优化
  • 一文读懂 LoRaWAN A、B、C类的区别及应用
  • 用 PyTorch 实现食品图像分类:从数据预处理到模型训练与预测
  • Linux电脑怎样投屏到客厅的大电视?支持远程投屏吗?
  • 从Java全栈到前端框架:一场真实的技术面试实录
  • 《Vue进阶教程》(7)响应式系统介绍
  • iOS15如何绕过MDM锁?详细图文教程教你搞定
  • 滚珠导轨在工业制造领域如何实现高效运行?
  • 网络传输的实际收发情况及tcp、udp的区别
  • 电子电气架构 --- 当前企业EEA现状(上)
  • 云计算学习笔记——Linux系统网络配置与远程管理(ssh)篇
  • Java搭建高效后端,Vue打造友好前端,联合构建电子采购管理系统,实现采购流程电子化、自动化,涵盖采购全周期管理,功能完备,附详细可运行源码
  • Node.js 命令行交互王者:inquirer 模块实战指南
  • Pytorch Yolov11目标检测+window部署+推理封装 留贴记录
  • WPF迁移avalonia之图像处理(一)
  • 基于SpringBoot的古典舞在线交流平台
  • C++革命性新特性:默认实例导出(exportDefault)让单例模式变得无比简单!
  • Redis 缓存雪崩实战:从监控告警到3层防护的完整修复
  • Docker镜像指南:从核心命令到离线迁移实战
  • ⸢ 肆 ⸥ ⤳ 默认安全:安全建设方案 ➭ a.信息安全基线
  • 工业视觉光源选色指南:白光通用、蓝光显瑕疵、红光能穿透,看完直接用
  • 《水浒智慧》(第一部:梁山头领那些事儿)读书笔记
  • 【面试场景题】外卖平台如何扛住高峰期上千qps订单查询流量
  • 【硬件测试】基于FPGA的16PSK+卷积编码Viterbi译码硬件片内测试,包含帧同步,信道,误码统计,可设置SNR
  • 数据结构之单链表的应用(一)
  • 服务器CPU飙高?排查步骤与工具推荐
  • 一、Scala 基础语法、变量与数据类型
  • 智能化企业级CRM系统开发实战:飞算JavaAI全流程体验