欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)