10个有趣的Python脚本,让你从入门到精通

liftword2个月前 (03-04)技术文章9

以下为你提供 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}。")

相关文章

绝版!247个Python经典有趣实例,代码齐全可复制,PDF版拿走即用

对于大部分Python学习者来说,基础核心知识基本已经掌握了,但"纸上得来终觉浅,绝知此事要躬行",要想完全掌握Python,还得靠实践应用。【文末获取】今天给大家分享247个Python实战项目,都...

5个短小精悍的 Python 趣味脚本,太赞了,非常适合小白上手

都说瑞雪兆丰年,新年开工第一天就下了一场大雪!漫天飞舞的雪花精灵,真的很漂亮,菜鸟哥所在的城市好久没有下雪了,冬天下点雪还是很有意境的。新年开始,大家Python学起来,目前Python是最火的语言,...

10个常见的实用python实例

以下是10个常见的实用Python实例,涵盖了不同领域和应用:1. 网页爬虫:import requests from bs4 import BeautifulSoup url = 'https:/...

Python函数式编程的详细分析(代码示例)

本篇文章给大家带来的内容是关于Python函数式编程的详细分析(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Functional Programming,函数式编程。Py...

概率、统计学在机器学习中应用:20个Python示例

大数据文摘受权转载自机器学习算法与Python实战在数据科学和机器学习领域,概率论和统计学扮演着至关重要的角色。Python作为一种强大而灵活的编程语言,提供了丰富的库和工具来实现这些概念。本文将通过...

10个非常适合菜鸟练手的Python项目,强烈建议收藏

对于Python学习者来说,能够熟练的掌握Python中简洁而高效的编程技巧,不仅能够提升程序的效率,更重要的是体现出编程者高超的编程能力。今天,小编就为大家分享十个Python的小案例,每个案例都有...