Python小白必做的30道基础练习题(附保姆级答案解析)

这里是为 Python 真正的小白 准备的 30道超基础练习题(2026年视角),难度从输入输出 → 变量 → 条件 → 循环 → 字符串 → 列表 → 函数逐步递增。

每道题都附带:

  • 题目描述
  • 参考答案(最简单、最清晰的写法)
  • 核心知识点 + 小提示(保姆级解析)

建议做法
先自己写 10–15 分钟 → 看不懂再看答案 → 看完答案立刻自己敲一遍 → 改一改输入试试不同情况。

1–10:最基础(输入输出 + 变量 + 运算)

  1. 写一个程序,打印 “Hello, Python小白!2026加油!”
print("Hello, Python小白!2026加油!")
  1. 定义两个变量 a=10,b=3,打印它们的和、差、积、商(保留2位小数)
a =10 b =3print(a + b)# 13print(a - b)# 7print(a * b)# 30print(f"{a / b:.2f}")# 3.33
  1. 从键盘输入两个整数,计算并打印它们的乘积
x =int(input("请输入第一个数:")) y =int(input("请输入第二个数:"))print("乘积是:", x * y)
  1. 输入一个数字,判断它是奇数还是偶数
n =int(input("输入一个整数:"))if n %2==0:print("偶数")else:print("奇数")
  1. 输入身高(米)和体重(公斤),计算 BMI 并判断体型
    (BMI = 体重 / 身高²,<18.5偏瘦,18.5-23.9正常,≥24超重)
height =float(input("身高(米):")) weight =float(input("体重(kg):")) bmi = weight /(height **2)print(f"BMI = {bmi:.2f}")if bmi <18.5:print("偏瘦")elif bmi <=23.9:print("正常")else:print("超重")
  1. 输入年份,判断是否是闰年
    (能被4整除且不能被100整除,或能被400整除)
year =int(input("输入年份:"))if(year %4==0and year %100!=0)or(year %400==0):print("闰年")else:print("平年")
  1. 打印 1 到 10 的所有整数(用while和for两种方式)
# while i =1while i <=10:print(i, end=" ") i +=1print()# 换行# forfor i inrange(1,11):print(i, end=" ")
  1. 计算 1 + 2 + 3 + … + 100 的和(用for和while各写一次)
# for版 s =0for i inrange(1,101): s += i print(s)# 5050# while版 s =0 i =1while i <=100: s += i i +=1print(s)
  1. 打印九九乘法表(完整版)
for i inrange(1,10):for j inrange(1, i+1):print(f"{j}×{i}={i*j:2d}", end=" ")print()
  1. 输入一个正整数 n,打印 n 行星号三角形(第一行1个*,第二行2个…)
n =int(input("输入行数:"))for i inrange(1, n+1):print("*"* i)

11–20:字符串 + 列表基础

  1. 输入一句话,把所有空格替换成下划线 _
s =input("输入一句话:")print(s.replace(" ","_"))
  1. 输入一个字符串,统计其中字母 ‘a’ 出现的次数(不区分大小写)
s =input("输入字符串:").lower()print("a 出现了", s.count('a'),"次")
  1. 输入三个整数,用空格分隔,一行输入,存入列表并排序后输出
nums =list(map(int,input("输入三个整数,用空格隔开:").split())) nums.sort()print(nums)
  1. 有一个列表 names = [“张三”, “李四”, “王五”, “赵六”],在"王五"后面插入"孙七"
names =["张三","李四","王五","赵六"] names.insert(3,"孙七")# 或 names.insert(names.index("王五")+1, "孙七")print(names)
  1. 列表 fruits = [“apple”, “banana”, “cherry”, “apple”],删除所有 “apple”
fruits =["apple","banana","cherry","apple"] fruits =[f for f in fruits if f !="apple"]# 列表推导式最简洁# 或者:while "apple" in fruits: fruits.remove("apple")print(fruits)
  1. 产生一个包含 1–100 所有能被3整除的数的列表
lst =[i for i inrange(1,101)if i %3==0]print(lst)
  1. 输入一个字符串,反转后输出(三种方法任选)
s =input("输入:")# 方法1 最常用print(s[::-1])# 方法2print("".join(reversed(s)))# 方法3print(s[len(s)::-1])# 记住这个也行
  1. 判断一个字符串是否是回文串(正读反读一样,如 “radar”)
s =input("输入字符串:").lower().replace(" ","")# 忽略大小写和空格if s == s[::-1]:print("是回文")else:print("不是回文")
  1. 把字符串 “1,2,3,4,5” 转成列表 [1,2,3,4,5](元素是整数)
s ="1,2,3,4,5" lst =[int(x)for x in s.split(",")]print(lst)
  1. 有一个列表 scores = [89, 76, 65, 92, 58, 77],统计及格(>=60)的人数
scores =[89,76,65,92,58,77] count =sum(1for x in scores if x >=60)# 或 len([x for x in scores if x >= 60])print("及格人数:", count)

21–30:函数 + 综合小练习

  1. 写一个函数,接收两个数,返回较大的那个
defmax2(a, b):return a if a > b else b print(max2(10,25))# 25
  1. 写一个函数 is_prime(n),判断 n 是否是素数
defis_prime(n):if n <2:returnFalsefor i inrange(2,int(n**0.5)+1):if n % i ==0:returnFalsereturnTrueprint(is_prime(17))# Trueprint(is_prime(15))# False
  1. 写函数 factorial(n) 计算 n 的阶乘(5! = 120)
deffactorial(n):if n ==0or n ==1:return1 res =1for i inrange(2, n+1): res *= i return res print(factorial(5))# 120
  1. 写函数 sum_of_list(lst),返回列表中所有元素的和
defsum_of_list(lst):returnsum(lst)# 最简单# 或者自己写循环# s = 0# for x in lst: s += x# return s
  1. 写一个函数,接收一个整数 n,打印 1 到 n 的斐波那契数列(前两个数是1,1)
deffib(n):if n <=0:return a, b =1,1print(a, end=" ")if n ==1:returnprint(b, end=" ")for _ inrange(3, n+1): a, b = b, a + b print(b, end=" ") fib(10)# 1 1 2 3 5 8 13 21 34 55
  1. 写函数 count_vowels(s),统计字符串中元音字母个数(a e i o u,不区分大小写)
defcount_vowels(s): s = s.lower()returnsum(1for c in s if c in"aeiou")print(count_vowels("Hello World"))# 3
  1. 有一个字典 d = {“name”:“小明”, “age”:18, “city”:“北京”},写代码把所有 key-value 打印成 “key: value” 格式
d ={"name":"小明","age":18,"city":"北京"}for k, v in d.items():print(f"{k}: {v}")
  1. 写一个函数 remove_duplicates(lst),去掉列表中的重复元素,保持原有顺序
defremove_duplicates(lst): seen =[]for x in lst:if x notin seen: seen.append(x)return seen print(remove_duplicates([1,2,2,3,1,4,5,5]))# [1,2,3,4,5]
  1. 写一个猜数字小游戏(电脑随机1-100,玩家猜,给出太大/太小/恭喜)
import random answer = random.randint(1,100) guess =0 count =0while guess != answer: guess =int(input("猜一个1-100的数字:")) count +=1if guess > answer:print("太大了!")elif guess < answer:print("太小了!")else:print(f"恭喜!猜对了!用了{count}次")
  1. 综合练习:输入一个正整数 n,输出 n 以内所有素数的列表
defget_primes(n): primes =[]for num inrange(2, n+1): is_prime =Truefor i inrange(2,int(num**0.5)+1):if num % i ==0: is_prime =Falsebreakif is_prime: primes.append(num)return primes n =int(input("输入 n:"))print(get_primes(n))

做完这30题,你就基本掌握了 Python 的变量、运算、条件、循环、字符串、列表、函数、简单算法这些最核心的基础。

下一阶段推荐练习方向(按兴趣选):

  • 列表推导式 + 字典 + 集合(再做20题)
  • 文件读写(读写txt、csv)
  • 简单爬虫(requests + beautifulsoup)
  • pygame 小游戏
  • pandas 基础数据处理

你现在做到第几题了?遇到哪道最卡壳?可以贴代码,我帮你 debug~

Read more

《算法闯关指南:优选算法--二分查找》--23.寻找旋转排序数组中的最小值,24.点名

《算法闯关指南:优选算法--二分查找》--23.寻找旋转排序数组中的最小值,24.点名

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 23. 寻找旋转排序数组中的最小值 * 解法(二分查找): * 算法思路: * C++算法代码: * 算法总结&&笔记展示: * 24 .点名 * 解法(二分查找): * 算法思路: * C++算法代码: * 算法总结&&笔记展示: * 结尾: 前言: 聚焦算法题实战,系统讲解三大核心板块:优选算法:剖析动态规划、二分法等高效策略,学会寻找“最优解”。 递归与回溯:掌握问题分解与状态回退,攻克组合、排列等难题。 贪心算法:理解“

By Ne0inhk
极致高效的数据处理:位图、布隆过滤器与哈希切分的奇妙之旅

极致高效的数据处理:位图、布隆过滤器与哈希切分的奇妙之旅

文章目录 * 前言 * 📮一、位图 * 📧1.1 面试题 * 📧1.2 位图的概念 * 📧1.3 位图的解决方案 * 📩1.3.1 原理 * 📩1.3.2 实现步骤 * 📩1.3.3 实现过程 * 📩1.3.4 优点 * 📧1.4 位图应用 * 📮二、布隆过滤器 * 📧2.1 布隆过滤器的开发历史 * 📧2.2 什么是布隆过滤器 * 📧2.3 布隆过滤器的实现原理 * 📩2.3.1 布隆过滤器的初步认识 * 📩2.3.2

By Ne0inhk
Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案 前言 在前文我们掌握了 humanize 进行基础数据转换的方法。但在鸿蒙(OpenHarmony)面向全球市场的布局中,真正的技术挑战往往隐藏在极其琐碎的“语言表达”中。例如:在英文中我们说 1 items 是错误的,必须是 1 item 与 2 items;而在中文环境下,我们虽然没有复数形变,但却有“万、亿”这类独特的四位一级计数逻辑。 一个真正具备“高级感”的鸿蒙应用,不应在数据展示上显得僵硬且带有明显的机器翻译痕迹。 本文将作为 humanize 适配的进阶篇,带你攻克多语言复数(Pluralization)

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 directed_graph 在鸿蒙应用中优雅处理复杂的拓扑排序与依赖关系(算法级工具)

Flutter for OpenHarmony: Flutter 三方库 directed_graph 在鸿蒙应用中优雅处理复杂的拓扑排序与依赖关系(算法级工具)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 的复杂业务逻辑设计时,我们经常会遇到“依赖关联”问题。例如: 1. 任务调度:任务 A 依赖于任务 B 和 C,任务 B 依赖于 D。你应该按什么顺序运行它们? 2. 数据流建模:在鸿蒙分布式节点中,数据是如何从一个端点流向另一个端点的?是否存在循环引用(Cycle)? 3. 资源加载器:一个大型鸿蒙 HAP 包内的资源加载优先级排序。 directed_graph 是一款纯粹的、算法级别的 Dart 库。它提供了标准的数据结构模型,能帮你极其高效地处理这些复杂的拓扑(Topology)关系。 一、有向图逻辑模型 该库支持对图节点进行深度遍历、

By Ne0inhk