Python课程第四天作业
1.定义一个函数,该函数可以实现控制台输入,最终返回一个int类型的正整数
def chr_to_int():
user_input = input('请输您要转换的字符串:')
if user_input.isdigit():
return int(user_input)
return False
2.定义一个函数,该函数可以实现用户录入,最终返回一个int类型的负整数
def chr_to_neg():
user_input = input('请输您要转换的字符串:')
if user_input.startswith('-') and user_input.split('-')[1].isdigit():
return int(user_input)
return False
3.定义一个函数,实现传入一个数或是字符串,返回值是 是否 是可转换为整数类型的数据
def chr_to_int_neg():
user_input = input('请输您要转换的字符串:')
if user_input.isdigit():
return True
elif user_input.startswith('-') and user_input.split('-',1)[1].isdigit():
return True
return False
4.定义一个函数,实现传入一个整型数字,判断并直接打印该数字是否是奇数还是偶数
def odd_or_even(user_input):
if user_input.isdigit():
if int(user_input) % 2 == 1:
print('是奇数')
else:
print('是偶数')
return False
5.定义一个函数,实现判断传入数据的类型,并直接打印其类型
def judge_type(user_input):
type_list=[str,int,list,set,dict,tuple,float,bool,complex]
for i in type_list:
if isinstance(user_input, i):
print(i)
6.定义一个函数,实现可以重复录入键盘信息,当用户输入q或Q时退出,否则判断是否为可转换为整数类型的数据,可以的话输出该数是奇数还是偶数,否则直接输出该字符串
def digital_conversion():
while True:
user_input = input('请输您的内容:')
if user_input.isdigit():
if int(user_input) % 2 == 1:
print('是奇数')
else:
print('是偶数')
elif user_input.startswith('-') and user_input.split('-',1)[1].isdigit():
if int(user_input) % 2 == 1:
print('是奇数')
else:
print('是偶数')
elif user_input == 'Q' or user_input == 'q':
return 0
else:
print(user_input)
7.定义一个函数,只要传入 "k1:v1,...,kn:vn" 格式的字符串,都可以将其转换为 {'k1':'v1',...,'kn':'vn'}
def str_to_dict(user_input):
x = {}
for i in user_input.split(','):
k, v = i.split(':')
x[k] = v
print(x)
8.定义一个函数,实现列表与元组类型的反转功能
def lsit_and_tuple(user_input):
if isinstance(user_input, tuple):
return list(user_input)
if isinstance(user_input, list):
return tuple(user_input)
9.定义一个函数,可以完成对list、tuple、dict、set四种类型数据的循环变量打印,不是这四种,则打印 "暂不支持该数据遍历"
def list_tuple_dict_set(user_input):
ls=[list,tuple,dict,set]
for i in ls:
if isinstance(user_input,i):
for k in user_input:
print(k)
return
else:
print('暂不支持该数据遍历')
10.定义一个函数,实现对单列集合进行去除的功能
def get_clear(data):
if isinstance(data, set):
return data
temp_list = []
for v in data:
if v not in temp_list:
temp_list.append(v)
if isinstance(data, tuple):
return tuple(temp_list)
return temp_list
11.定义一个函数,实现文件(不一定是文本文件)的跨文件夹的移动
import shutil
def file_mv(source_file,target_dir):
shutil.move(source_file,target_dir)
12..写出完整的装饰器(不⽤考虑带参装饰器,就是普通装饰器)语法
def outer(func):
def inner(*args, **kwargs):
#装饰前操作
res = func(*args, **kwargs)
#装饰后操作
return res
return inner
@outer
def func(*args, **kwargs):
pass
13.有⼀个计算两个数和的⽅法,为其添加⼀个确保两个参数都是int或float类型的装饰器,保证运算不会抛异常
def outer(func):
def inner(*args, **kwargs):
for i in args:
if not (isinstance(i,int) or isinstance(i,float)):
print('参数不合法')
return False
res = func(*args, **kwargs)
return res
return inner
@outer
def num_sum(a,b):
print(a + b)
14.有⼀个⼀次性录⼊⼈名并返回⼈名的⽅法(⼈名只考虑存英⽂),为其添加⼀个装饰器,使得处理后⼈名⾸字⺟⼀定⼤写
def outer1(func):
def inner(*args, **kwargs):
res = func(*args, **kwargs)
return res.title()
return inner
@outer1
def retun_name(name):
return name
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少