Python基础之简单的小程序和小脚本
【摘要】 这个Python教程介绍了两个小程序。首先是一个账户管理类小程序,支持存款、取款和查询余额功能,确保金额始终保留两位小数。用户可以输入初始金额创建账户,并进行存取款操作。其次,是一个检查作业提交的脚本,它遍历指定目录,找出未提交作业(即没有对应ID文件)的学生ID。用户输入目录路径后,脚本会显示未提交作业的学生ID,如果所有人都提交了,则显示相应消息。
Python基础之简单的小程序和小脚本
一,账户存取款
class Account:
"""
账户类,用于管理账户余额和进行存款、取款操作。
属性:
__balance (float): 账户余额,私有属性以保护余额不被直接修改。
方法:
__init__(self, balance=0.0): 构造函数,初始化账户余额。
keep_two_decimal(self, amount): 确保金额保留两位小数。
deposit(self, amount): 存款方法,将指定金额存入账户。
withdraw(self, amount): 取款方法,从账户中取出指定金额,若余额不足则不进行操作。
get_balance(self): 获取当前账户余额。
"""
def __init__(self, balance=0.0):
"""
初始化账户余额。
参数:
balance (float): 初始余额,默认为0.0。
"""
self.__balance = round(balance, 2)
def keep_two_decimal(self, amount):
"""
将金额保留两位小数。
参数:
amount (float): 输入的金额。
返回:
float: 经过四舍五入保留两位小数后的金额。
"""
return round(amount, 2)
def deposit(self, amount):
"""
存款操作。
参数:
amount (float): 存入的金额。
"""
round_amount = self.keep_two_decimal(amount) # 确保存款金额保留两位小数
self.__balance += round_amount
print(f"存入金额: {round_amount:.2f}. 现余额: {self.__balance:.2f}") # 打印存款信息
def withdraw(self, amount):
"""
取款操作。
参数:
amount (float): 取出的金额。
注:
如果取款金额超过账户余额,则不进行操作并打印余额不足信息。
"""
if amount <= self.__balance:
round_amount = self.keep_two_decimal(amount) # 确保取款金额保留两位小数
self.__balance -= round_amount
print(f"取出金额: {round_amount:.2f}. 现余额: {self.__balance:.2f}")
else:
print("余额不足.")
def get_balance(self):
"""
获取当前账户余额。
返回:
float: 当前账户余额。
"""
return self.__balance
# 创建一个Account对象实例(初始金额)
start = float(input("初始金额:"))
try:
if start >= 0:
my_account = Account(start)
else:
print("初始金额不能为负数")
except ValueError:
print("请输入正确的金额")
# 用户存入金额
a = input("请输入存入金额:")
try:
if float(a) >= 0:
# 对输入进行异常处理,确保输入为非负数
my_account.deposit(float(a))
else:
print("输入错误,请输入非负数")
except ValueError:
print("输入错误,请输入正确钱数")
# 用户取出金额
b = input("请输入取出金额:")
try:
if float(b) >= 0:
# 检查取出金额是否超过账户余额
if float(b) <= my_account.get_balance():
my_account.withdraw(float(b))
else:
print("余额不足")
else:
print("输入错误,请输入非负数")
except ValueError:
print("输入错误,请输入正确钱数")
二,查作业
import os
import re
def name_id(students):
"""
检查指定目录下学生作业提交情况,打印未提交作业的学生ID。
参数:
- students: 字符串,表示包含学生作业的目录路径。
无返回值。
"""
# 生成学生ID列表,格式为01到33
ids = [f'{i:02d}' for i in range(1, 34)]
# 列出指定目录下的所有文件和文件夹
works = os.listdir(students)
# 生成学生ID的两位数子字符串列表
id_substrings = [f'{i:02d}' for i in range(1, 34)]
# 生成正则表达式模式列表,用于匹配学生ID子字符串
patterns = [rf'(?:{sub})' for sub in id_substrings]
# 找出未提交作业的学生ID,即在works中找不到对应ID文件的学生ID
without_id = [students_ids for students_ids, last in zip(ids, patterns) if
not any(re.search(last, file) for file in works)]
# 如果有学生未提交作业,则打印未提交作业的学生ID
if without_id:
print("没交:\n", ",".join(map(str, without_id)))
else:
# 如果所有学生都提交了作业
print("全交了")
# 获取用户输入的目录路径
lujing = input("路径:")
# 检查路径是否存在且为目录
if os.path.isdir(lujing):
print("=+" * 20, "start", "+=" * 20)
name_id(lujing) # 调用函数检查作业提交情况
print("=+" * 20, " end ", "+=" * 20)
else:
# 如果路径不存在或不是目录,则打印提示信息
print("路径不存在或不是目录")
# 在脚本执行完毕后暂时停止控制台窗口的关闭,以便于查看结果
input("按回车键继续...") # os.system("pause")||前者通用,后者仅用于Windows
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)