铁乐学python_day09_作业

练习题

1、整理函数相关知识点,写博客
2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,
并将其作为新列表返回给调用者。
def odd_index(l):
    lis = []
    for i in range(len(l)):
        # 通过range设定索引范围比通过元素找索引要好,因为相同元素返回的索引值会有误
        if i % 2 != 0:
            lis.append(l[i])
    return lis

# 验证odd_index函数的使用正常不:
li = [ i for i in range(20)]
print(li)
print(odd_index(li))
tuple1 = (‘a‘, ‘b‘, ‘c‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘)
print(odd_index(tuple1))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[‘b‘, ‘b‘, ‘d‘, ‘f‘]

# 利用切片会更简单
# def odd_index(argv):
#     return argv[1::2]

3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def len_5(l):
    return len(l) > 5

4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,
并将新内容返回给调用者。
def len_2(l):
    if len(l) > 2:
        # 满足条件才返回内容,不满足的话就什么也不做,也就是None
        return l[:2]

lis = [1, 2]
print(len_2(lis))
lis2 = [1, 2, 3, 4]
print(len_2(lis2))

None
[1, 2]

5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
def count_n(s):
    num = 0
    alpha = 0
    blank = 0
    other = 0
    for i in s:
        if i.isdigit():
            num += 1
        elif i.isalpha():
            alpha += 1
        elif i == ‘ ‘:
            blank += 1
        else:
            other += 1
    result = ‘共有数字{}个,字母{}个,空格{}个,其他{}个‘.format(num,alpha,blank,other)
    return(result)

# 验证
print(count_n(‘uy143 oifg87 90/+    ‘))

共有数字7个,字母6个,空格6个,其他2个

6、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容2,并返回结果。
def blank_ex(l):
    li = []
    for i in l:
        if ‘ ‘ in str(i):
            li.append(i)
    return li

#验证

s = ‘yiu dgh‘
li1 = [‘ 34s‘, 45, ‘et‘]
tuple1 = ( ‘r t‘, 78, [ ])
print(blank_ex(s))
print(blank_ex(li1))
print(blank_ex(tuple1))

7、写函数,检查传入字典的每一个value的长度,如果大于2,
那么仅保留前两个长度的内容,并将新内容返回给调用者。
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    PS:字典中的value只能是字符串或列表
def dic_ex(d):
    for i in d:
        # 通过键来找到相应的值,可以直接重新赋值
        if len(d[i]) > 2:
            d[i] = d[i][:2]
    return d

# 验证
dic = {"k1": "v1v1", "k2": [11,22,33,44],}

print(dic_ex(dic))

{‘k1‘: ‘v1‘, ‘k2‘: [11, 22]}

8、写函数,接收两个数字参数,返回比较大的那个数字。
def max_min(a, b):
    return a if a > b else b

9、写函数,用户传入修改的文件名,与要修改的内容,
执行函数,完成整个文件的批量修改操作(进阶)。

10、写一个函数完成三次登陆功能,再写一个函数完成注册功能(进阶)
# 定义注册函数
def register(*args, **kwargs):
    while True:
        username = input(‘请输入用户名(Q/q返回首页):‘).strip()
        if username.upper() == ‘Q‘:
            # 退出函数
            return
        with open(‘reg.txt‘, encoding=‘utf-8‘) as f1:
            for i in f1:
                user = i.strip().split()
                if username == user[0] or username == ‘‘:
                    print(‘己存在用户名,请重新注册:‘)
                    break
            # 在for循环读取完整个文件判断没有同名用户后才进行追加写入的操作
            else:
                password = input(‘请输入密码:‘).strip()
                # 扩展了一个密码不能为空和小于6位数的功能
                if password ==‘‘ or len(password) < 6:
                    print(‘密码不能为空或小于6位,请重新注册。‘)
                    continue
                with open(‘reg.txt‘, encoding=‘utf-8‘, mode=‘a‘) as f2:
                    f2.write(‘\n{}\t{}‘.format(username, password))
                    print(‘注册成功‘)
                    return

# 定义一个登录函数
def login(*args, **kwargs):
    count = 3
    while count != 0:
        username = input(‘请输入你的用户名:‘).strip()
        password = input(‘请输入你的密码:‘).strip()
        with open(‘reg.txt‘, encoding=‘utf-8‘) as f3:
            for i in f3:
                user = i.strip().split()
                if username == user[0] and password == user[1]:
                    print(‘登录成功‘)
                    # 登录成功退出登录函数
                    return
            else:
                count -= 1
                print(‘你的用户名或密码输入错误,请重新输入。你还有%d次机会。‘ % count)
    print(‘你的三次输入机会己用尽,请稍后再试。‘)

明日默写。
①,return的作用。
②,传参的几种方法,每个都简单写一个代码。
如,实参,按位置传参。
def func(x,y):
Pass
func(‘a’,’b’)

原文地址:https://www.cnblogs.com/tielemao/p/8698553.html

时间: 2024-07-30 17:34:48

铁乐学python_day09_作业的相关文章

铁乐学Python_day12_作业

1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组 例如:[('红心',2),('草花',2), -('黑桃','A')] def poker(): suit = ['红心', '梅花', '黑桃', '方片'] count = [i for i in range(2, 11)] king = ['J', 'Q', 'K', 'A'] poker_list = count + king li = [] for key in suit: for value in poker_list:

铁乐学Python_day09_函数

今天我们来学习函数. 产生的原由,若没有函数,会显得重复代码多,可读性差,也会造成重复造轮子的情景. 故产生了函数,用来封装好一个功能,它是以功能为导向的. 1.[函数的样式] 例如自己定义一个函数: def my_len(): def python中的关键字,用来声明和定义一个函数: my_len 函数名,命名规范与变量命名的一样: def与函数名中间要隔一个空格: 函数名+"()"+":",括号加冒号,括号里填的要你想要设置函数调用者传递的参数: 紧接着就是缩进

铁乐学Python_Day34_Socket模块2和黏包现象

铁乐学Python_Day34_Socket模块2和黏包现象 套接字 套接字是计算机网络数据结构,它体现了C/S结构中"通信端点"的概念. 在任何类型的通信开始之前,网络应用程序必須创建套接字. 可以将它们比作成电话插孔,没有它将无法进行通信. 套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信. 这就是所谓的进程间通信(Inter Process Communication, IPC). 有两种类型的套接字:基于文件的和面向网

铁乐学python_day25_序列化模块

部份内容摘自博客http://www.cnblogs.com/Eva-J/ 回顾内置方法: __len__ len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度 __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,计算对象的hash值 __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断值相等 __str__ str(obj) print(obj) '%s'%obj 的结果依赖于__str__,用来做

铁乐学python_Day39_多进程和multiprocess模块2

锁 -- multiprocess.Lock (进程同步) 之前我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理, 但是它们之间的运行没有顺序,一旦开启也不受我们控制. 尽管并发编程能让我们更加充分的利用IO资源,但是也会带来新的问题. 当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题. 遇到数据.安全比速度重要的场景,我们就需要将进程变回受同步控制. 例: #!/usr/bin/env python # _*_ coding: utf-8 _*_ impo

铁乐学Python_day12_装饰器

[函数的有用信息] 例: def login(user, pwd): ''' 功能:登录调用 参数:分别有user和pwd,作用分别是用户和密码: return: 返回值是登录成功与否(True,False) ''' print(user, pwd, "欢迎登录") print(login.__name__) #查看函数名字 print(login.__doc__) #查看函数注释 login 功能:登录调用 参数:分别有user和pwd,作用分别是用户和密码: return: 返回值

铁乐学python_day24_面向对象进阶1_内置方法

题外话1: 学习方法[wwwh] what where why how 是什么,用在哪里,为什么,怎么用 学习到一个新知识点的时候,多问问上面的四个问题,并了解和实践透彻. 什么是反射? 先不说枯燥的概念,你可以自己总结出来,对于python中的反射,什么时候会用到? 需要使用字符串数据类型的变量名来使用变量的时候用到反射. (通过字符串的形式操作对象相关的属性和方法.) 关键词:字符串 使用到字符串的场景多在: 1)文件中存储的是字符串, 2)网络上能传递的也最接近字符串, 3)用户输入的(用

铁乐学python26_hashlib+configparser+logging模块

大部份内容摘自博客http://www.cnblogs.com/Eva-J/ hashlib模块算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? 摘要算法又称哈希算法.散列算法. 它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest, 目的是为了发现原始数据是否被人篡改过. 摘要算法之所以能指出数据是否被篡改过,就是

铁乐学python_md5校验两个文件的一致性

# 写一个函数,参数是两个文件的路径 # 返回的结果是T/F # 判断两个文件的md5值是否相同 import hashlib def diff_md5(file1,file2): def chick_md5(file): md5 = hashlib.md5() with open(file, 'rb') as f: while True: content = f.read(8192) if content: md5.update(content) else: break return md5.