page contents

Python学差不多了吧,来试试这3个迷你项目!

在Python的世界里,我特别欣赏它众多的第三方库,它们让各种复杂的操作变得触手可及。接下来,我想分享3个通过Python构建的项目实例,这些项目不仅有趣,还能帮助我们更好地学习和掌握Python编程。
attachments-2025-02-Iqle6Hd667a95986b3d42.png在Python的世界里,我特别欣赏它众多的第三方库,它们让各种复杂的操作变得触手可及。接下来,我想分享3个通过Python构建的项目实例,这些项目不仅有趣,还能帮助我们更好地学习和掌握Python编程。

一、石头剪刀布小游戏
目标:设计一个基于命令行的简单游戏,让玩家在石头、剪刀、布之间做出选择,并与电脑进行较量。在每次对决中,如果玩家战胜了电脑,其得分将增加一分。游戏结束时,玩家的最终得分将被显示。
提示:你需要编写代码来接收玩家的选择,并且生成电脑的一个随机选择。接着,你需要编写逻辑来比较两者的选择,并根据胜负规则来更新玩家的得分。如果玩家赢了,则得1分。
import random  

# 定义游戏选项  
choices = ['石头', '剪刀', '布']  

# 定义胜负规则  
def determine_winner(player_choice, computer_choice):  
    if player_choice == computer_choice:  
        return'平局'
    elif (player_choice == '石头' and computer_choice == '剪刀') or \  
         (player_choice == '剪刀' and computer_choice == '布') or \  
         (player_choice == '布' and computer_choice == '石头'):  
        return'你赢了'
    else:  
        return'你输了'

# 初始化玩家分数  
player_score = 0

# 游戏循环  
while True:  
    # 接收玩家输入  
    player_input = input("请输入你的选择(石头、剪刀、布):")  
      
    # 检查玩家输入是否有效  
    if player_input not in choices:  
        print("无效输入,请输入石头、剪刀或布")  
        continue
      
    # 电脑随机选择  
    computer_choice = random.choice(choices)  
      
    # 展示结果  
    print(f"你选择了{player_input},电脑选择了{computer_choice}")  
    result = determine_winner(player_input, computer_choice)  
    print(result)  
      
    # 更新玩家分数  
    if result == '你赢了':  
        player_score += 1
      
    # 是否继续游戏  
    if input("想继续游戏吗(y/n)?").lower() != 'y':  
        break

# 游戏结束,展示玩家分数  
print(f"游戏结束,你的最终得分是:{player_score}")
在这个代码中,我们首先定义了游戏的选项和胜负规则。然后,我们使用一个while循环来让游戏持续进行,直到玩家选择不再继续。在每次循环中,我们接收玩家的输入,检查其有效性,并让电脑随机选择一个选项。接着,我们调用determine_winner函数来确定胜负,并更新玩家的分数。最后,我们询问玩家是否想继续游戏,如果不,就退出循环并显示玩家的最终分数。

二、随机密码生成器
目标:创建一个程序,可指定密码长度,生成一串随机密码。
提示:创建一个数字+大写字母+小写字母+特殊字符的字符串。根据设定的密码长度随机生成一串密码。
import random  
import string  
  
def generate_password(length):  
    # 定义密码中可能包含的字符集  
    numbers = string.digits  
    uppercase = string.ascii_uppercase  
    lowercase = string.ascii_lowercase  
    special_chars = string.punctuation.replace('_', '').replace('-', '')  # 移除下划线和连字符  

    # 将所有字符集合并为一个列表  
    all_chars = numbers + uppercase + lowercase + special_chars  

    # 使用random.choices函数从all_chars中随机选择指定长度的字符  
    # k=length指定选择的字符数量,weights=None表示所有字符被选中的概率相同  
    password = ''.join(random.choices(all_chars, k=length))  

    return password  

# 示例使用  
password_length = int(input("请输入您想要的密码长度:"))  
password = generate_password(password_length)  
print(f"生成的随机密码是:{password}")
请注意,string.punctuation包含了所有特殊字符,但可能包含了一些你可能不希望出现在密码中的字符(比如空格、换行符、制表符、下划线、连字符等)。
在这个示例中,我们使用replace方法移除了下划线和连字符。如果你有其他不想要的字符,可以进一步修改special_chars字符串。
另外,random.choices函数是Python 3.6及更高版本中引入的,它允许你指定每个元素的权重,但在这个例子中,我们使用了默认权重(即所有字符的权重相同)。如果你使用的是Python 3.5或更早版本,你可能需要使用random.choice结合random.sample或其他方法来达到类似的效果。

三、自动发送邮件
目的:编写一个Python脚本,可以使用这个脚本发送电子邮件。
提示:email库可用于发送电子邮件。
在Python中,通常不会直接使用email库来发送电子邮件,因为email库主要用于创建和解析电子邮件消息,而不是发送它们。发送电子邮件通常需要使用像smtplib这样的库,它提供了SMTP(简单邮件传输协议)客户端的接口。
以下是一个使用smtplib和email.mime模块发送电子邮件的Python脚本示例:
import smtplib  
from email.mime.multipart import MIMEMultipart  
from email.mime.text import MIMEText  

# 设置SMTP服务器和登录凭据  
smtp_server = 'smtp.example.com'  # 替换为你的SMTP服务器地址  
port = 587  # 通常SMTP端口为25,但很多服务器使用587(提交)或465(SSL/TLS)  
username = 'your_email@example.com'  # 替换为你的电子邮件地址  
password = 'your_password'  # 替换为你的电子邮件密码或应用专用密码  

# 设置邮件内容  
sender = username  
recipients = ['recipient1@example.com', 'recipient2@example.com']  # 替换为收件人地址  
message = MIMEMultipart()  
message['From'] = sender  
message['To'] = ', '.join(recipients)  
message['Subject'] = 'Hello from Python'
body = 'This is a test email sent from Python using smtplib and email.mime modules.'
message.attach(MIMEText(body, 'plain'))  

# 发送邮件  
with smtplib.SMTP(smtp_server, port) as server:  
    server.starttls()  # 启用TLS加密(如果服务器支持)  
    server.login(username, password)  
    server.sendmail(sender, recipients, message.as_string())  
    print('Email sent successfully!')
注意:
你需要将smtp_server、username、password和recipients替换为你自己的SMTP服务器地址、电子邮件地址、密码和收件人地址。
并非所有的SMTP服务器都支持TLS加密,如果你的服务器不需要TLS,可以删除server.starttls()这一行。
为了安全起见,不建议在脚本中硬编码密码。你可以考虑使用环境变量、配置文件或其他安全的方式来存储和访问敏感信息。
一些电子邮件服务提供商(如Gmail)可能要求你使用应用专用密码而不是你的实际密码。如果你的电子邮件账户启用了两步验证,你可能需要创建一个应用专用密码来使用。
发送电子邮件时可能会遇到各种错误,例如SMTP服务器连接失败、登录凭据错误、发送限制等。请确保你的SMTP服务器设置正确,并且你的账户没有受到任何发送限制。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-02-10 09:42
  • 阅读 ( 26 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1734 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1734 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章