熬夜整理!Python入门必刷的100道实战编程题【附源码+详细解析】
1. Python入门编程题精选刚开始学习Python时最头疼的就是不知道从哪里下手练习。我当年自学Python时也是在网上到处找题目但很多题目要么太难要么太简单根本不适合新手。后来在企业做技术面试官发现很多初级开发者连最基本的语法都写不利索。所以这次我特意整理了10个最适合入门的Python题目都是企业面试和实际开发中最常用的基础语法。先来看第一个经典题目数字排列组合。题目要求用1、2、3、4这四个数字能组成多少个互不相同且无重复数字的三位数这个问题考察的是对循环和条件判断的掌握。我第一次写这个程序时用了三层嵌套for循环后来发现其实可以用itertools库的permutations函数简化from itertools import permutations digits [1, 2, 3, 4] count 0 for p in permutations(digits, 3): print(p[0], p[1], p[2]) count 1 print(f总共有{count}种组合)第二个必刷题是企业奖金计算。这个题目模拟了真实业务场景中的分段计算需求考察的是对条件分支的理解。很多新手会写一堆if-else其实可以用更优雅的字典方式实现profit int(input(请输入利润金额(元): )) thresholds [1000000, 600000, 400000, 200000, 100000, 0] rates [0.01, 0.015, 0.03, 0.05, 0.075, 0.1] bonus 0 for i in range(len(thresholds)): if profit thresholds[i]: bonus (profit - thresholds[i]) * rates[i] profit thresholds[i] print(应发奖金:, bonus)2. Python核心数据结构实战掌握Python的数据结构是进阶的关键。我见过不少开发者工作3年还在用列表处理所有问题完全不知道字典和集合的优势。下面这组题目专门训练数据结构的选择和使用技巧。列表去重是个经典问题。新手可能会用双重循环但Python老手都知道用集合的特性def remove_duplicates(lst): return list(set(lst)) # 保留原始顺序的写法 def remove_duplicates_ordered(lst): seen set() return [x for x in lst if not (x in seen or seen.add(x))]字典合并是实际开发中经常遇到的需求。Python 3.9提供了更简洁的操作符dict1 {a: 1, b: 2} dict2 {b: 3, c: 4} # 传统方法 merged {**dict1, **dict2} # Python 3.9 merged dict1 | dict2矩阵转置考察对列表推导式的掌握。这个题目我在面试中经常用能看出候选人是否真正理解Python的简洁语法matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]] transpose [[row[i] for row in matrix] for i in range(len(matrix[0]))]3. Python函数与算法精粹函数是Python编程的基石而算法则是程序员的必备技能。这部分题目都是我在技术面试中必问的能快速判断候选人的编程水平。斐波那契数列有至少5种实现方式从最基础的递归到高级的生成器# 递归法性能最差 def fib_recursive(n): if n 1: return n return fib_recursive(n-1) fib_recursive(n-2) # 生成器法最优雅 def fib_generator(): a, b 0, 1 while True: yield a a, b b, a b # 获取前10项 fib fib_generator() print([next(fib) for _ in range(10)])素数判断算法考察对数学概念的理解和代码优化能力。我见过的最优解是这样的def is_prime(n): if n 1: return False if n 2: return True if n % 2 0: return False max_divisor int(n**0.5) 1 for i in range(3, max_divisor, 2): if n % i 0: return False return True快速排序是算法面试的常客。Python风格的实现非常简洁def quicksort(lst): if len(lst) 1: return lst pivot lst[len(lst)//2] left [x for x in lst if x pivot] middle [x for x in lst if x pivot] right [x for x in lst if x pivot] return quicksort(left) middle quicksort(right)4. Python实战项目演练最后这部分是小型项目实战把前面学到的知识综合运用。这些项目都是我带新人时用的真实案例特别适合写到简历中。文件加密工具结合了文件操作和加密算法import hashlib def encrypt_file(input_file, output_file, key): with open(input_file, rb) as f: data f.read() # 使用SHA256生成加密密钥 hash_key hashlib.sha256(key.encode()).digest() encrypted bytearray() for i in range(len(data)): encrypted.append(data[i] ^ hash_key[i % len(hash_key)]) with open(output_file, wb) as f: f.write(encrypted)单词统计工具展示了文本处理的常用技巧from collections import Counter import re def word_count(file_path, top_n10): with open(file_path, r, encodingutf-8) as f: text f.read().lower() words re.findall(r\b\w\b, text) return Counter(words).most_common(top_n)简易爬虫框架演示了网络请求和HTML解析import requests from bs4 import BeautifulSoup def simple_crawler(url, max_depth2): visited set() def crawl(url, depth): if depth max_depth or url in visited: return try: print(fCrawling: {url}) response requests.get(url, timeout5) visited.add(url) soup BeautifulSoup(response.text, html.parser) # 提取所有链接 for link in soup.find_all(a, hrefTrue): next_url link[href] if next_url.startswith(http): crawl(next_url, depth 1) except Exception as e: print(fError crawling {url}: {e}) crawl(url, 0)