python 第13天作业

# 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
# 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
default = None
def check1(**kwargs):
def check(func):
def inner():
global default
if default == None:
if kwargs['name'] == 'egon' and kwargs['password'] == '123':
print('认证成功')
re = func()
default = 1
return re
else:
print('已认证')
re = func()
return re
#return
return inner
return check
d = eval('{"name":"egon","password":"123"}')
#d = {"name":"egon","password":"123"}
@check1(**d)
def func():
print('hello world')
@check1()
def func1():
print('123')

@check1()
def func2():
print('456')

func()
func1()
func2()

# 1.编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
def dl(url):
x = '下载页面结果'
return x
# 2.为题目五编写装饰器,实现缓存网页内容的功能:
# 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
import os
def swap(func):
def inner(*args):
if os.path.getsize('1.txt') != 0:
with open('1.txt', 'r', encoding='utf-8') as f:
#f.seek(0)
for line in f:
print(line,end='')
else:
re = func(*args)
with open('1.txt','w',encoding='utf-8') as f1:
f1.write(re)
return inner
@swap
def dl(url):
x = url
return x

dl('www.baidu.com')

转载于:https://www.cnblogs.com/fenglin0826/p/7248213.html

Python中,处理“鸡兔同笼”问题是一个经典的算法练习,它涉及到了基础的线性代数和循环控制。第十三关的目标可能是让你编写一个函数来解决给定的鸡兔同笼问题。通常,这会涉及到以下几个步骤: 1. **接收用户输入**:获取头和脚的数量作为参数或直接从命令行读取。 2. **定义假设**:初始设定鸡和兔子的数量,比如先假设全是鸡(每只鸡有1个头和2只脚)。 3. **循环遍历**:通过循环逐个尝试增加兔子的数量,每次改变后更新头和脚的总数,直到总数匹配用户输入。 4. **判断是否有解**:检查当前鸡和兔的数量组合是否符合题目的条件(头的总数和脚的总数)。 5. **寻找整数解**:由于鸡兔数量必须为正整数,所以需要确认是否有整数解存在。 6. **返回结果**:如果有解,输出鸡和兔的具体数量;如果没有整数解,提示数据错误。 下面是一个简单的Python函数实现: ```python def find_chickens_and_rabbits(heads, legs): for rabbits in range(0, heads + 1): # 从0到头的数量 chickens = heads - rabbits # 计算剩下的鸡的数量 if 2 * chickens + 4 * rabbits == legs: # 判断脚的总数 return f"有{chickens}只鸡,{rabbits}只兔" return "Data Error!" # 示例用法 heads, legs = map(int, input("请输入头和脚的数量:").split()) solution = find_chickens_and_rabbits(heads, legs) print(solution) ``` 完成这道作业后,你应该能熟练运用循环和条件判断来解决这类问题,并理解其背后的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值