10个有趣的Python脚本,让你从入门到精通
以下为你提供 10 个不同类型且有趣的 Python 脚本示例,涵盖基础语法应用、文件操作、数据处理、网络请求等多个方面,帮助你逐步提升 Python 编程能力。
1、猜数字游戏
# encoding=utf-8
import random
def guess_number(num):
"""
猜数字游戏
:param num:
:return:
"""
number = random.randint(1, num)
# 设定一个值进入循环
guess = 0
# 统计猜了多少次
counts = 0
while guess != number:
try:
guess = int(input(f"猜一个 1 到 {num} 之间的数字: "))
except ValueError:
print("你输入的格式有误,请重新输入!")
counts += 1
if guess < number:
print("猜的数字太小了,再试试!")
elif guess > number:
print("猜的数字太大了,再试试!")
print(f"恭喜你,猜对了!你一共用了 {counts} 次尝试。")
if __name__ == '__main__':
guess_number(10)
2、简单计算器
# encoding=utf-8
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
def div(a,b):
if b != 0:
return a / b
else:
return "错误:除数不能为零"
def cal():
print("请选择运算方式:")
print("1:加法")
print("2:减法")
print("3:乘法")
print("4:除法")
choice=input("请输入你的选择:(1/2/3/4)")
num1=float(input("请输入第一个数字:"))
num2 = float(input("请输入第一个数字:"))
if choice == "1":
result = add(num1,num2)
print(f"{num1}+{num2} = {result}")
elif choice == "2":
result = sub(num1,num2)
print(f"{num1}-{num2} = {result}")
elif choice == "3":
result = mul(num1,num2)
print(f"{num1}*{num2} = {result}")
elif choice == "4":
result = div(num1,num2)
print(f"{num1}/{num2} = {result}")
else:
print("无效的选择")
if __name__=="__main__":
cal()
3、生成随机密码
import random
import string
def generate_password(length=12, include_digits=True, include_symbols=True):
"""生成随机密码。
Args:
length: 密码长度,默认为 12。
include_digits: 是否包含数字,默认为 True。
include_symbols: 是否包含特殊字符,默认为 True。
"""
characters = string.ascii_letters
if include_digits:
# string.digits输出:0123456789
characters += string.digits
if include_symbols:
# string.punctuation 是一个字符串,包含所有的ASCII标点符号字符。
characters += string.punctuation
password = ''.join(random.choice(characters) for _ in range(length))
return password
if __name__ == '__main__':
# 示例用法
password = generate_password()
print(password)
4、石头剪刀布:经典游戏Python版
# encoding=utf-8
import random
def func():
"""
石头剪刀布游戏
:return:
"""
# 定义选项字典,方便输出对应的名称
choices = {1: "石头", 2: "剪刀", 3: "布"}
# 显示游戏规则
print("欢迎来到石头剪刀布游戏!")
print("请选择:1 - 石头,2 - 剪刀,3 - 布,输入其他数字或字符退出游戏。")
while True:
try:
user_chioce = int(input("请输入你的选择"))
if user_chioce not in [1, 2, 3]:
print("游戏结束!!!")
break
computer_choice = random.randint(1, 3)
# 输出计算机和用户的选择
print("你的选择是:", choices[user_chioce])
print("计算机选择:", choices[computer_choice])
# 判断胜负
if user_chioce == computer_choice:
print("平局!!!")
elif (
(user_chioce == 1 and computer_choice == 2) or
(user_chioce == 2 and computer_choice == 3) or
(user_chioce == 3 and computer_choice == 1)
):
print("你赢了!!!")
else:
print("你输了!!!")
except ValueError:
print("输入无效,请输入 1、2 或 3,输入其他内容退出游戏。")
if __name__ == "__main__":
func()
5、待办事项列表:让Python帮你管理任务
# encoding=utf-8
"""
待办事项列表:让Python帮你管理任务
"""
# 初始化一个空的待办事项列表
todo_list = []
def add_task():
"""
添加代办事项
:return:
"""
task = input("请输入要添加的代办事项:")
# 创建一个包含事项内容和完成状态的字典
new_task = {
"task": task,
"completed": False
}
todo_list.append(new_task)
print("已添加事项!!!")
def view_task():
"""
查询待办事项
:return:
"""
if not todo_list:
print("待办事项为空!!!")
else:
print("待办事项列表:")
for index, task in enumerate(todo_list, start=1):
if task["completed"]:
status = "已完成"
else:
status = "未完成"
print(f"{index}. {task['task']}--{status}")
def mark_completed():
"""标记待办事项为已完成"""
view_task()
try:
index = int(input("请输入要标记为已完成的事项编号: ")) - 1
if 0 <= index < len(todo_list):
todo_list[index]["completed"] = True
print(f"已将事项 '{todo_list[index]['task']}' 标记为已完成。")
else:
print("无效的编号,请输入正确的事项编号。")
except ValueError:
print("输入无效,请输入一个有效的数字编号。")
def delete_task():
"""
删除代办事项
:return:
"""
"""删除待办事项"""
view_task()
try:
index = int(input("请输入要删除的事项编号: ")) - 1
if 0 <= index < len(todo_list):
deleted_task = todo_list.pop(index)
print(f"已删除事项: {deleted_task['task']}")
else:
print("无效的编号,请输入正确的事项编号。")
except ValueError:
print("输入无效,请输入一个有效的数字编号。")
def main():
while True:
print("\n待办事项管理系统")
print("1. 添加待办事项")
print("2. 查看待办事项列表")
print("3. 标记事项为已完成")
print("4. 删除待办事项")
print("5. 退出")
choice = input("请输入你的选择 (1-5): ")
if choice == '1':
add_task()
elif choice == '2':
view_task()
elif choice == '3':
mark_completed()
elif choice == '4':
delete_task()
elif choice == '5':
print("感谢使用,再见!")
break
else:
print("无效的选择,请输入 1 - 5 之间的数字。")
if __name__ == '__main__':
main()
6、基础网页抓取器:获取网络信息
# encoding=utf-8
import requests
from bs4 import BeautifulSoup
def get_html(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
# 提取标题
title = soup.title.string
print("网页标题:", title)
# 提取所有链接
links = soup.find_all("a")
for link in links:
print(link.get("href"))
if __name__ == "__main__":
url = "https://www.******.com"
get_html(url)
7、天气应用:实时掌握天气信息
import requests
# 定义API URL和密钥
api_key = "你的api密钥"
base_url = "http://api.openweathermap.org/data/2.5/weather"
def get_weather(city):
# 构建请求URL
url = f"{base_url}?q={city}&appid={api_key}&units=metric"
response = requests.get(url)
if response.status_code == 200:
# 提取JSON数据
data = response.json()
return data
else:
print("无法获取天气数据,请检查城市名称或API密钥。")
return None
def parse_weather(data):
# 提取需要的信息
city = data['name']
temperature = data['main']['temp']
weather_desc = data['weather'][0]['description']
humidity = data['main']['humidity']
wind_speed = data['wind']['speed']
# 打印天气信息
print(f"城市:{city}")
print(f"温度:{temperature}°C")
print(f"天气描述:{weather_desc}")
print(f"湿度:{humidity}%")
print(f"风速:{wind_speed} m/s")
if __name__ == "__main__":
# 测试获取天气数据
city_name = input("请输入城市名称:")
weather_data = get_weather(city_name)
if weather_data:
parse_weather(weather_data)
8、疯狂填词游戏生成器:发挥你的创意
# 定义故事模板,使用花括号 {} 作为占位符,并在其中注明词语类型
story_template = "今天天气非常 {形容词},我决定去 {地点} 玩。我看到了一只 {形容词} 的 {动物},它正在 {动词}。我觉得很 {形容词},于是我也开始 {动词}。最后,我带着 {名词} 开心地回家了。"
# 定义占位符对应的提示信息
placeholders = {
"{形容词}": ["请输入一个形容词", "再输入一个形容词", "再输入一个形容词"],
"{地点}": ["请输入一个地点"],
"{动物}": ["请输入一种动物"],
"{动词}": ["请输入一个动词", "请再输入一个动词"],
"{名词}": ["请输入一个名词"]
}
# 存储用户输入的词语
user_inputs = []
# 遍历占位符,获取用户输入
for placeholder, prompts in placeholders.items():
for prompt in prompts:
user_input = input(prompt + ": ")
user_inputs.append(user_input)
# 替换故事模板中的占位符
for placeholder, user_input in zip(story_template.split()):
story_template = story_template.replace(placeholder, user_input, 1)
# 输出生成的故事
print("\n生成的故事如下:")
print(story_template)
9、斐波那契数列:探索数学之美
def fibonacci_recursive(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
# 测试递归方法
n = 10
print(f"递归方法:斐波那契数列的第 {n} 项是 {fibonacci_recursive(n)}")
10、吊死鬼游戏:挑战你的词汇量
import random
# 预定义的单词列表
word_list = ["apple", "banana", "cherry", "date", "elderberry"]
# 随机选择一个单词
secret_word = random.choice(word_list)
# 初始化游戏状态
max_attempts = 6
attempts_left = max_attempts
guessed_letters = []
display_word = ["_" for _ in secret_word]
def display_game_state():
print("当前猜出的单词:", " ".join(display_word))
print("已猜测的字母:", ", ".join(guessed_letters))
print(f"剩余猜测次数: {attempts_left}")
# 游戏主循环
while attempts_left > 0 and "_" in display_word:
display_game_state()
guess = input("请输入一个字母进行猜测: ").lower()
# 检查输入是否有效
if len(guess) != 1 or not guess.isalpha():
print("输入无效,请输入一个字母。")
continue
# 检查字母是否已经猜测过
if guess in guessed_letters:
print("你已经猜测过这个字母,请尝试其他字母。")
continue
guessed_letters.append(guess)
# 检查字母是否在目标单词中
if guess in secret_word:
print("猜对了!")
for i in range(len(secret_word)):
if secret_word[i] == guess:
display_word[i] = guess
else:
print("猜错了!")
attempts_left -= 1
# 游戏结束,输出结果
if "_" not in display_word:
print(f"恭喜你,猜对了!目标单词是 {secret_word}。")
else:
print(f"很遗憾,你输了。目标单词是 {secret_word}。")