Python编程实战营:四款实用小项目助你快速入门,从零开始打造你的个人项目集!

news2024/11/17 13:35:13

踏入编程世界的门槛,总是伴随着既兴奋又忐忑的心情。作为Python的新手,你是否渴望通过实际项目来巩固知识、提升技能?本篇文章将引领你踏上一段从理论到实践的精彩旅程,通过四个精心设计的项目,让你在趣味与挑战中快速成长。

项目一:简易文本编辑器

首先,我们将从基础出发,动手打造一个简易的文本编辑器。这个项目将教会你如何使用Python的文件操作功能,如打开、编辑和保存文件。通过实践,你将深刻理解文件处理在编程中的重要性,并学会将理论知识转化为实际代码。

项目二:猜数字游戏

接下来,让我们进入一个更有趣的世界——游戏开发。我们将编写一个简单的猜数字游戏,这个游戏将帮助你掌握条件判断、循环控制以及基本的用户交互技巧。通过不断猜测和调试,你将体验到编程带来的乐趣,并学会如何优化代码以提高用户体验。

项目三:斐波那契数列探索

进入数学的世界,我们将一起探索斐波那契数列的奥秘。通过编写代码来生成斐波那契数列,你将学会递归和迭代两种重要的编程思想。此外,你还将了解如何使用Python的内置函数和库来简化问题求解过程,提高编程效率。

项目四:99乘法口诀表

最后,我们将用Python来打印出经典的99乘法口诀表。这个项目虽然看似简单,但其中蕴含着循环嵌套和字符串格式化等高级编程技巧。通过完成这个项目,你将更加熟练地掌握Python的循环结构,并学会如何优雅地展示数据。

这四个项目不仅涵盖了Python编程的基础知识点,还融入了趣味性和挑战性。它们将帮助你从多个角度理解编程思想,提高解决问题的能力,并为未来的编程之路打下坚实的基础。

无论你是编程小白还是希望巩固基础的Python爱好者,这篇文章都将是你不可多得的实战宝典。现在,就让我们一起动手,打造属于你的第一个编程项目集吧!

本文介绍了四款非常适合初学者入门的Python小项目,在学习Python的过程中多多做一些项目练手会大大提高自己的编程水平,如果喜欢这篇文章的话,点点关注,后面会分享更多关于Python的文章资源

目录

一、简易的文本编辑器

二、猜数字游戏

三、斐波那契

递归方法

迭代方法

四、99乘法口诀表


一、简易的文本编辑器

使用Python创建一个简单的文本编辑器,它允许用户输入文本,并将其保存到文件中。

def main():  # 定义了一个名为main的函数,程序的主体逻辑将在这个函数内实现  
    text = ""  # 初始化一个空字符串变量text,用于存储用户输入的文本  
    while True:  # 开始一个无限循环,程序将持续运行直到用户选择退出  
        command = input("请输入命令 (输入、保存、退出): ").lower()  # 提示用户输入命令,并将输入转换为小写,以便进行后续比较  
          
        if command == "输入":  # 如果用户输入的命令是“输入”  
            line = input("请输入一行文本: ")  # 提示用户输入一行文本  
            text += line + "\n"  # 将用户输入的文本(加上换行符)追加到text变量中  
          
        elif command == "保存":  # 如果用户输入的命令是“保存”  
            filename = input("请输入文件名(包括扩展名): ")  # 提示用户输入文件名  
            with open(filename, "w", encoding="utf-8") as file:  # 使用with语句打开(或创建)一个文件用于写入,指定编码为utf-8  
                file.write(text)  # 将text变量中的内容写入文件  
            print("文件已保存。")  # 输出提示信息,告知用户文件已被保存  
          
        elif command == "退出":  # 如果用户输入的命令是“退出”  
            print("感谢使用简易文本编辑器!")  # 输出感谢信息  
            break  # 跳出循环,结束程序  
          
        else:  # 如果用户输入的命令不是“输入”、“保存”或“退出”  
            print("未知命令,请重新输入。")  # 输出提示信息,告知用户输入的命令未知  
  
if __name__ == "__main__":  # 判断如果当前脚本是直接运行的(而不是被导入到其他脚本中作为模块)  
    main()  # 调用main函数,开始执行程序

这个简易文本编辑器允许用户输入文本,将文本保存到文件中,或者退出编辑器。它使用了一个无限循环来不断接收用户的命令,并根据命令执行相应的操作。当用户选择退出时,程序将结束运行。

运行代码:

请输入命令 (输入、保存、退出): 输入
请输入一行文本: hello python
请输入命令 (输入、保存、退出): 保存
请输入文件名(包括扩展名): python_test.txt
文件已保存。
请输入命令 (输入、保存、退出): 退出
感谢使用简易文本编辑器!

可以看到在当前文件下创建了一个文件

二、猜数字游戏

这个游戏会随机选择一个数字,然后让玩家猜测这个数字是多少。玩家每次猜测后,程序会告诉他们是猜高了还是猜低了,直到猜中为止。

import random  # 导入Python的random模块,用于生成随机数  
  
def guess_number_game():  # 定义一个函数,用于执行猜数字游戏  
    number_to_guess = random.randint(1, 100)  # 使用random模块的randint函数生成一个1到100之间的随机整数,作为要猜的数字  
    guess = None  # 初始化一个变量guess,用于存储用户的猜测,初始值为None  
    tries = 0  # 初始化一个变量tries,用于记录用户猜测的次数,初始值为0  
    
    print("我已经想好了一个1到100之间的数字。")  # 向用户显示提示信息  
    print("你能猜到是哪个数字吗?")  # 再次向用户显示提示信息  
    
    while guess != number_to_guess:  # 当用户的猜测不等于要猜的数字时,执行循环  
        try:  # 尝试执行以下代码块  
            guess = int(input("请输入你的猜测: "))  # 提示用户输入猜测,并将输入转换为整数后赋值给guess变量  
            tries += 1  # 用户每猜测一次,就将tries变量的值加1  
            if guess < number_to_guess:  # 如果用户的猜测小于要猜的数字  
                print("太低了!")  # 向用户显示提示信息  
            elif guess > number_to_guess:  # 如果用户的猜测大于要猜的数字  
                print("太高了!")  # 向用户显示提示信息  
            else:  # 如果用户的猜测等于要猜的数字  
                print(f"恭喜你!答对了。数字就是{number_to_guess}。")  # 向用户显示祝贺信息,并显示正确的数字  
                print(f"你总共尝试了{tries}次。")  # 显示用户猜测的次数  
        except ValueError:  # 如果在尝试将用户输入转换为整数时发生错误(例如,用户输入的不是数字)  
            print("请输入一个有效的数字。")  # 向用户显示错误提示信息  
    
if __name__ == "__main__":  # 判断当前脚本是否作为主程序运行  
    guess_number_game()  # 如果是,则调用guess_number_game函数,开始执行猜数字游戏

通过生成一个随机数并让用户猜测该数是多少,来实现一个简单的猜数字游戏。游戏会不断提示用户输入猜测,直到用户猜中为止,并会显示用户猜中的数字和猜测的次数。如果用户输入的不是有效的数字,则会提示用户重新输入。

运行程序

我已经想好了一个1到100之间的数字。
你能猜到是哪个数字吗?
请输入你的猜测: 10
太高了!
请输入你的猜测: 5
太高了!
请输入你的猜测: 3
恭喜你!答对了。数字就是3。
你总共尝试了3次。

三、斐波那契

斐波那契数列(Fibonacci sequence)是一个非常著名的数列,在自然界和计算机科学中都有广泛的应用。斐波那契数列是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...,其中每个数是前两个数的和(除了前两个数)。

下面是一个使用Python编写的斐波那契数列的示例,包括递归和迭代两种方法,并对每种方法进行了详细注释和说明。

递归方法

递归方法是最直观的实现方式,但对于大的n值,它会非常慢,因为它会重复计算很多值。

def fibonacci_recursive(n):  
    """  
    递归方式计算斐波那契数列的第n项  
      
    参数:  
    n -- 整数,表示斐波那契数列的项数(从0开始计数)  
      
    返回:  
    斐波那契数列的第n项  
    """  
    # 递归的基准情况  
    if n <= 0:  
        return 0  
    elif n == 1:  
        return 1  
    # 递归调用,计算前两项的和  
    else:  
        return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)  
  
# 示例:计算斐波那契数列的第10项  
print(fibonacci_recursive(10))  # 输出: 55

迭代方法

迭代方法比递归方法更高效,特别是当需要计算大量斐波那契数时。它避免了重复计算。

def fibonacci_iterative(n):  
    """  
    迭代方式计算斐波那契数列的第n项  
      
    参数:  
    n -- 整数,表示斐波那契数列的项数(从0开始计数)  
      
    返回:  
    斐波那契数列的第n项  
    """  
    # 初始化前两个数  
    a, b = 0, 1  
    if n == 0:  
        return a  
    elif n == 1:  
        return b  
    # 迭代计算  
    for _ in range(2, n+1):  
        a, b = b, a + b  
    return b  
  
# 示例:计算斐波那契数列的第10项  
print(fibonacci_iterative(10))  # 输出: 55

注意:虽然递归方法代码更简洁,但对于大n值,它的性能不如迭代方法。在实际应用中,特别是在需要高效计算大量斐波那契数时,推荐使用迭代方法。

四、99乘法口诀表

这段代码首先使用了一个外层循环for i in range(1, 10):,这个循环控制的是乘法口诀表的行数,从1到9。然后,对于每一行,又使用了一个内层循环for j in range(1, i+1):,这个循环控制的是当前行的列数,也就是从1到当前行数i(因为乘法口诀表是上半部分的,所以每行的列数等于当前行数)。在内层循环中,使用print函数打印出乘法表达式和结果,通过end="\t"参数来实现在同一行内继续打印,不换行,并通过\t(制表符)来增加一些空格,使输出更加整齐。当内层循环结束后,即一行的打印完成后,使用print()函数输出一个换行符,开始新一行的打印。

# 打印99乘法口诀表  
for i in range(1, 10):  # 外层循环控制行  
    for j in range(1, i+1):  # 内层循环控制列,每行的列数随着行数的增加而增加  
        # 打印乘法表达式和结果,end参数用于在同一行内继续打印,不换行  
        # \t是制表符,用于在输出中增加一些空格,使输出更加整齐  
        print(f"{j}x{i}={i*j}", end="\t")  
    # 当一行的打印完成后,输出一个换行符,开始新一行的打印  
    print()

输出结果

1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
1x4=4	2x4=8	3x4=12	4x4=16	
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	
1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	
1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	
1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器人大会引领产业动向,卓翼飞思绘制无人系统教科研新蓝图

8月21日&#xff0c;万众瞩目的2024世界机器人大会暨博览会在北京亦创国际会展中心盛大开幕。这场为期5天&#xff0c;集“展览”“论坛”“赛事”于一体的机器人盛会&#xff0c;反映了当下机器人领域的繁荣生态。据官方统计数据&#xff0c;今年现场逛展观众高达25万人次&…

划分聚类方法实现与应用

文章目录 划分聚类介绍K-Means 聚类方法用python实现聚类生成示例数据随机初始化中心点计算样本与中心点的距离更新聚类中心K-Means 聚类算法实现用scikit-learn实现聚类如何确定k肘部法则K-Means++ 聚类算法生成数组K-Means 聚类K-Means++ 算法流程K-Means++ 算法实现Mini-Bat…

【AI绘画】Midjourney前置指令/describe、/shorten详解

文章目录 &#x1f4af;前言&#x1f4af;Midjourney前置指令/describe使用方法1️⃣2️⃣3️⃣4️⃣&#xff08;选择对应提示词&#xff09;&#x1f504;&#xff08;重新识别生成提示词&#xff09;&#x1f389;Imagine all&#xff08;一次性生成所有&#xff09;注意 &a…

【项目文档】软件实施方案(软件文档Word原件)

一、 概述 二、 项目介绍 2.1 概览 三、 项目实施 3.1 项目实施概况 3.2 项目实施管理原则 3.3 项目组织结构 3.4 项目团队 四、 项目实施计划 4.1 项目实施工作流程 4.2 项目软件部分进度安排 4.3 网络拓扑图 4.4 服务器需求清单 五、 人员培训 5.1 培训内容 5…

如何快速创建美观实用的思维导图?五个技巧教你轻松上手

在信息爆炸的时代&#xff0c;如何高效地整理和记忆海量信息&#xff0c;成为许多人关注的焦点。思维导图作为一种创新的笔记记录方式&#xff0c;因其直观、结构化的特性&#xff0c;逐渐成为现代学习和工作的首选工具。许多学习高手和职场精英都纷纷青睐这一方法&#xff0c;…

【TiDB原理与实战详解】4、DM 迁移和TiCDC数据同步~学不会? 不存在的!

DM工具数据迁移 1、简介 DM全称TiDB Data Migration , 支持兼容mysql协议的数据库&#xff08;MySQL、MariaDB、Aurora MySQL&#xff09;&#xff0c;将数据&#xff08;异步&#xff09;迁移到TiDB中。支持全量和增量数据传输。可以过滤数据&#xff0c;可以将分库分表的数据…

【JVM原理】类加载机制

文章目录 一、JVM组成二、类的生命周期2-1 加载 (Loading)2-2 连接 (Linking)2-3 初始化 (Initialization)2-4 使用 (Using)2-5 卸载 (Unloading) 三、类加载器3-1 类加载器的作用3-2 类加载器的种类3-3 类加载机制双亲委派机制&#xff08;Parent Delegation Model&#xff09…

分享林曦老师的苏东坡入门阅读清单

大家暑假过得还愉快嘛假期前暄桐的课程刚好进行到六阶“见道明心的笔墨”书法部分《赤壁赋》的学习&#xff0c;也为暑假提供些新的乐趣&#xff0c;林曦老师十分贴心地送给大家一份苏东坡阅读入门清单&#xff0c;每本书有不同的侧重点。祝大家读书开心&#xff0c;有满满的收…

某张卡NR only下可以驻网 AUTO模式下在2G/3G工作

结论:需要终端设置为data centric&#xff0c;或ps only。 从日志看&#xff0c;5G下的注册收到REGISTRATION ACCEPT。但是没有携带ims support。 正常网络&#xff1a; ims_Vops_3GPP 1 (0x1) nwk_feature_supp_inc 1 (0x1)nwk_feature_supportedlength 2 (0x2)mpsi 0 (0…

JVM中篇:字节码与类的加载篇-03-类的加载过程(类的生命周期)详解

笔记来源&#xff1a;尚硅谷 JVM 全套教程&#xff0c;百万播放&#xff0c;全网巅峰&#xff08;宋红康详解 java 虚拟机&#xff09; 文章目录 1. 概述大厂面试题 2. 过程一&#xff1a;Loading&#xff08;加载&#xff09;阶段2.1. 加载完成的操作2.2. 二进制流的获取方式2…

设置文本的颜色

AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"><applicationandroid:allowBackup"true"android:icon"mipmap/ic_launcher…

如何使用查询路由构建更先进的 RAG

前言 目前大部分RAG的实践方案都是通过检索模型从外部数据库中获取与输入相关的文档或信息&#xff1b;然后&#xff0c;将这些信息与输入结合&#xff0c;输入到生成模型中进行文本生成。这种方案往往会有一个问题就是所有的数据都存储在一起&#xff0c;但这往往是没法在生产…

PCB寄生电容的影响,计算方法和消除措施

什么是PCB寄生电容&#xff1f; 寄生电容是存在于由绝缘体隔开的两个导电结构之间的虚拟电容&#xff0c;是PCB布局中的一种效应&#xff0c;其传播的信号表现为电容&#xff0c;但并不是真正意义上的电容。 寄生电容有什么影响&#xff1f; 在高速或高频电路板中&#xff0c…

Java云端联动触手可及高端台球助教教练多端系统小程序源码

&#x1f3b1;云端联动&#xff0c;触手可及&#xff01;高端台球助教教练多端系统&#xff0c;你的私人球技加速器&#x1f680; &#x1f308; 开篇&#xff1a;遇见台球新纪元 在这个科技日新月异的时代&#xff0c;台球这项优雅的运动也迎来了它的智能升级&#xff01;&am…

【机器学习】支持向量机(SVM)的基本概念、如何选择向量机(SVM)的参数以及在python中使用向量机的实例

引言 支持向量机&#xff08;SVM&#xff09;是一种在机器学习中广泛应用的二分类模型。它的核心思想是寻找一个最优的超平面&#xff0c;将不同类别的样本分隔开来。这个过程涉及到最大化间隔&#xff0c;即找到那些最接近分隔超平面的样本点&#xff0c;这些点被称为支持向量…

3秒AI写真出图,Stable Diffusion2024升级版+使用教程来了!(无需安装,解压即用

前言 要说今年摄影圈最大的新秀 那妥妥的就Stable Diffusion 比如下面的写真照片 你敢信这是SD绘画生成的&#xff1f; 本次教程将使用AI绘画工具 Stable Diffusion 进行讲解&#xff0c;如还未安装SD的小伙伴可以扫描免费获取哦~ 就在刚刚它又全面升级了 新版无需安装&a…

插入移动硬盘后【提示需要格式化】,如何修复?

遇到格式化问题&#xff0c;又想要找回数据&#xff0c;怎么办&#xff1f; 我们只需要一个数据恢复软件就能解决所有数据丢失问题 1、转转大师数据恢复 点击直达链接>>https://www.huifuzhinan.com 恢复数据类型超全面的一个软件&#xff0c;包括但不限于以下几种&…

Python开发者必备利器之Gooey使用详解

概要 在Python开发中,命令行程序是一种常见的方式来与用户交互,但有时候用户更喜欢使用图形界面来操作程序。 为了实现这一转变,我们可以使用非标准模块Gooey,它可以帮助我们将命令行程序快速转换为具有图形用户界面(GUI)的应用程序。 本文将介绍Gooey的基本概念、使用…

矩阵分析 学习笔记2 线性子空间 线性映射

子空间是啥&#xff1a; 平凡子空间&#xff1a;{0}&#xff08;只有一个0元素&#xff09;和V&#xff08;原本的子空间&#xff09; 向量组生成的子空间&#xff1a; 比如说&#xff0c;我们的三维空间就是由三个标准基组成的向量组“张”成的空间&#xff0c;而标准基组成的…

基于Pytorch框架的深度学习DeepLabv3+网络头发语义分割系统源码

第一步&#xff1a;准备数据 头发分割数据&#xff0c;总共有1050张图片&#xff0c;里面的像素值为0和1&#xff0c;所以看起来全部是黑的&#xff0c;不影响使用 第二步&#xff1a;搭建模型 DeepLabV3的网络结构如下图所示&#xff0c;主要为Encoder-Decoder结构。其中&am…