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

在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入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
