python函数练习题

1) 整理函数相关知识点,写博客。

”’
1、函数的定义:将可重复使用的,实现某种功能的代码段组织在一起
2、函数的语法:
def 函数名(参数):
函数体
return
2.1、函数名是一个变量,因此命名规则需遵守变量命名规则

3、函数的调用
函数名()
4、函数的返回值
return 可空、None、单个、多个以tuple返回给调用者
5、函数的参数:
函数定义时声明的变量的叫形参
1、位置参数
2、默认参数
函数调用时传给函数的叫实参
1、位置参数
定义多少个,调用时也必须传多少个
2、关键字参数
3、混合参数
位置参数需在关键字参数之前

”’

2) 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

print('first'.center(40, '='))
def a3(arg):
    ret = [ ]
    for i in range(len(arg)):
        if i % 2 == 1:
            ret.append(arg[i])
        else:
            pass
    return ret
li = [11,22,33,44,55]
r = a3(li)
print(li)
print(r)

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

print('first'.center(40, '='))
def fun1(n):
    print('判断传入对象的长度是否大于5')
    if len(n) >= 5:
        return True
    else:
        return False
content = input('请输入内容:')
print(fun1(content))

4) 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

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

def a4(arg):
    ret = {}
    for key, value in arg.items():
        if len(value) > 2:
            ret[key] = value[0:2]
        else:
            ret[key] = value
    return  ret
r = a4(dic)
print(r)

5) 写函数,计算传入函数的字符串中,[数字]、[字母]、[空格] 以及 [其他]的个数,并返回结果。

def count(s):
    dict = {'数字的个数:':0, '字母的个数:':0, '空格的个数:':0, '其他的个数:':0}
    for i in s:
        if i.isdigit():
            dict['数字的个数:'] += 1
        elif i.islower() or i.isupper():
            dict['字母的个数:'] += 1
        elif i.isspace():
            dict['空格的个数:'] += 1
        else:
            dict['其他的个数:'] += 1
    return dict
str = input('请输入内容:')
res = count(str)
print(res)

注汉字isalpha判断它为字母

6)写函数,接收两个数字参数,返回比较大的那个数字。

print('first'.center(40, '='))
def num(a,b):
    if a > b:
        return a
    else:
        return b
r = num(1,2)
print(r)

7),写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

dic = {“k1”: “v1v1”, “k2”: [11,22,33,44]}

PS:字典中的value只能是字符串或列表

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

def a4(arg):
    ret = {}
    for key, value in arg.items():
        if len(value) > 2:
            ret[key] = value[0:2]
        else:
            ret[key] = value
    return  ret
r = a4(dic)
print(r)

8)写函数,此函数只接收一个参数且此参数必须是列表数据类型,

此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。

例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。

def ret_dic(l):
dic = {}
if type(l) == list: # 判断类型,如果用is not 判断的是内存地址
for k, v in enumerate(l):
dic[k] = v
return dic
# 避免为空,return必须要返回的是个对象,故需要把return放带外面
# 如果传给的是空列表或其他类型的数据,不能返回None

teacher_answer

def ret_dic2(lis):
dic = {}
if type(lis) == list:
for index in lis:
dic[index] = lis[index]
return dic # *******important

9)写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。

用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。

def input_file(name, sex, age, education):
with open(“student_msg”, “a”, encoding=”UTF-8”) as f:
li = “\t”.join([name, sex, age, education])
f.write(li+”\n”)

name = input(“请输入您的姓名:”)
sex = input(“请输入您的性别:”)
age = input(“请输入您的年龄:”)
education = input(“请输入您的学历:”)
input_file(name, sex, age, education)

10)对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。

def input_file(name,age, education,sex="男"):
    with open(name, "a+", encoding= "UTF-8" ) as f:
        s = "\t".join([name, sex, age, education])
        f.write(s +"\n")
        # nr=s +"\n"
        # f.write(nr)

while 1:
        name = input("请输入您的姓名(输入q或Q退出):")
        if name.strip().upper() == "Q":
            break
        else:
            sex = input("请输入您的性别(默认为男,回车即可):")
            age = input("请输入您的年龄:")
            education = input("请输入您的学历:")
            if sex == "女":
                input_file(name,age, education,sex )
            else:
                input_file(name,age, education)
                print("输入成功")
                break

11)写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。

def change_file(file_name, old_mesg, chang_mesg):
with open(“file_name”,”r”,encoding=”UTF-8”) as f1,\
open(“temp_file”,”w”,encoding=”UTF-8”) as f2:
for line in f1:
line = line.replace(old_mesg, chang_mesg)
f2.write(line)
import os
os.remove(file_name)
os.rename(“temp_file”, file_name)

12,写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)

user_name = 13321
password = 133211

def login():
    for i in range(0,3):
        name = int(input('请输入账号:'))
        if name == user_name:
            psw = int(input('请输入密码:'))
            if psw == password:
                print('登录成功'.center(40, '='))
                return
            else:
                print('密码错误'.center(40, '='))
                if i == 2:
                    print('您的机会已用完,请12小时之后再试')
                else:
                    print('您还有%s次机会' % (2 - i))
        else:
            print('账号不存在'.center(40, '='))
            if i == 2:
                print('您的机会已用完,请12小时之后再试')
            else:
                print('您还有%s次机会' % (2 - i))
res = login()


def regist():
    while 1:
        print('请注册'.center(40, '='))
        re_name = int(input('请输入账号:'))
        if re_name == user_name:
            print(''.center(40, '='))
        else:
            re_psw = int(input('请输入密码:'))
            return '注册成功'.center(40, '=')
re = regist()
print(re)

猜你喜欢

转载自blog.csdn.net/qq_42874945/article/details/81519101