python基础2_练习题
程序员文章站
2024-03-23 18:03:22
...
练习题
打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('{0}x{1}={2}'.format(j,i,i*j),end=' ')
print('\n')
输入年月份,并判断当前是当年的第几天
import calendar
try:
years = int(input("输入年份:"))
months = int(input("输入月份:"))
days = int(input("输入日份:"))
monthRange = calendar.monthrange(years, months)
total = 0
except Exception as error:
print("需要输入正确年月日信息喔,错误信息如下:",error)
else:
for i in range(1, months + 1):
total += monthRange[1]
total = total + days
print("{0}年{1}月{2}日是{0}年的第{3}天~~~".format(years,months,days,total))
排序函数
#冒泡排序
a=[1,4,56,7,9,34,1,4,5,6,10]
def sort(a):
for i in range(len(a)):
for j in range(len(a)-1):
if a[j]>=a[j+1]:
a[j+1],a[j]=a[j],a[j+1]
return a
print(sort(a))
装饰器练习1:编写装饰器,为函数加上统计时间的功能,被装饰函数有返回值
总结:被装饰的函数有返回值时,在装饰器里的内层函数也需要有返回值,不然会导致被装饰函数值为None
import time
def decoration(func):
def wrapper(x,y):
t = time.time()
fc=func(x,y)
print(time.time() - t)
return fc #被装饰的函数有返回值,这里也需要return,如果此处没有返回,导致使用原函数使用装饰器后返回值是None
return wrapper
@decoration
def add(x,y):
time.sleep(3)
return x+y
a=add(3,4)
print(a)
#打印结果:
3.0001637935638428
7
装饰器练习2:给一个登录函数,登陆前添加校验判断
def decoration(func):
def wrapper(name_var):
name=input('输入账号:')
password=input('输入密码:')
if name=='shuer' and password=='shuer123456':
func(name_var)
else:
print('输入的账号和密码不对哟')
return wrapper
@decoration
def firstlogin(name):
print('欢迎光临 {}小姐姐'.format(name))
a=firstlogin('殊二')
装饰器联系题3:
一个原有请求url结果函数:用户传入一个url,函数返回下载页面的结果
添加功能:如果缓存文件有值,从缓存文件中读取内容;如果缓存文件没有值,则请求url,并将内容写入缓存文件
import requests
def decoration(func):
def wrapper():
with open('test.txt','r') as f:
res=f.read()
if res:
return res
else:
c=func()
with open('test.txt', 'w+',encoding='utf-8') as f:
f.write(str(c))
return c
return wrapper
@decoration
def my_down(url = 'https://www.baidu.com'):
return requests.get(url).text
baidu_web = my_down()
print(baidu_web)