-
写一个匿名函数,判断指定的年是否是闰年
year = int(input("请输入一个年份:")) run_nian = lambda year: '是闰年' if year % 400 == 0 else '不是闰年' if year % 100 == 0 else '是闰年' if year % 4 == 0 else '不是闰年' print(run_nian(year))
-
写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
def ni_xu(list1): return list1[::-1] print(ni_xu([1,2,3,4,5]))
-
写一个函数,获取指定列表中指定元素的下标(如果指定元素有多个,将每个元素的下标都返回)
例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回: 0,3
def index_num(list1, num): list2 = [] for i in range(0, len(list1)): if list1[i] == num: list2.append(i) return list2 list1 = [1,3,4,1] param = 1 print(index_num(list1,param))
-
写一个函数,能够将一个字典中的键值对添加到另外一个字典中(不使用字典自带的update方法)
def update_dict(dict1:dict,dict2:dict): for x in dict2: dict1[x] = dict2[x] return dict1 dict1 = {'name':'zhangsan', 'age':18} dict2 = {'gender':'male','score':90} print(update_dict(dict1,dict2))
-
写一个函数,能够将指定字符串中的所有的小写字母转换成大写字母;所有的大写字母转换成小写字母(不能使用字符串相关方法)
def switch_abc(str1): str2 = '' for x in range(0, len(str1)): if 'a' <= str1[x] <= 'z': b = ord(str1[x]) - 32 str2 += chr(b) elif 'A' <= str1[x] <= 'Z': b = ord(str1[x]) + 32 str2 += chr(b) else: str2 += str1[x] return str2 str1 = 'abcAbCDD123R' print(switch_abc(str1))
-
实现一个属于自己的items方法,可以将指定的字典转换成列表。列表中的元素是小的列表,里面是key和value (不能使用字典的items方法)
例如:{'a':1, 'b':2} 转换成 [['a', 1], ['b', 2]]
def switch_list(dict1): list1 = [] list2 = [] for x in dict1: list2.append(x) list2.append(dict1[x]) list1.append(list2) list2 = [] return list1 dict1 = {'a':1, 'b':2} print(switch_list(dict1))
-
编写一个递归函数,求一个数的n次方
def ci_fang(n, m): if m == 1: return n return ci_fang(n, m - 1) * n print(ci_fang(2, 10))
编写代码模拟打地鼠的小游戏,
假设一共有5个洞口,老鼠在里面随机一个洞口;
人随机打开一个洞口,如果有老鼠,代表抓到了
如果没有,继续打地鼠;但是地鼠会跳到其他洞口
from random import randint
def ff_game():
while True:
num = int(input('选择洞口(1~5):'))
b = randint(1, 5)
if num == b:
print('抓住了')
return '老鼠在', b, '号洞'
else:
print('太可惜了,没抓住')
print(ff_game())
- 编写一个函数,计算一个整数的各位数的平方和
例如: sum1(12) -> 5 sum1(123) -> 14
def sum1(n):
sum1 = 0
while n // 10 != 0 or n != 0:
x = n % 10
sum1 += x ** 2
n //= 10
return sum1
print(sum1(123))
-
楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编程序计算共有多少种不同的走法?需求: 编制一个返回值为整型的函数Fib(n),用于获取n阶台阶的走法(挣扎一下)
def f(n): if n == 1: # n=1时有1种方式 return 1 elif n == 2: # n=2时有2种方式 return 2 else: return f(n - 1) + f(n - 2) # n=n时有f(n - 1) + f(n - 2)两种方式 print(f(4))
-
写一个函数对指定的数分解因式
例如: mab(6) —> 打印: 2 3 mab(3) -> 1 3 mab(12) -> 2 2 3
def mab(num): i = 2 list1 = [] while True: if num % i == 0: num = num // i list1.append(i) i = 1 if num // 2 == i: list1.append(num) break i += 1 return list1 num = 12 print(mab(num))
-
写一个函数判断指定的数是否是回文数
123321是回文数 12321是回文数 525是回文数def hui_wen(n): str1 = str(n) str2 = '' for y in range(len(str1) - 1, -1, -1): str2 += str1[y] if str1 == str2: return True else: return False print(hui_wen(525))
14.为函数写一个装饰器,把函数的返回值 +100 然后再返回
def add_hundred(fn):
def new_fn(*args,**kwargs):
result = fn(*args, **kwargs)
result += 100
return result
return new_fn
@add_hundred
def add(a, b):
return a + b
res = add(17, 13)
print(res) # 结果为 130
15.编写一个递归函数,求指定数的阶乘
例如:5的阶乘就是54321
def jie_cheng(n):
if n == 1:
return 1
return jie_cheng(n - 1) * n
print(jie_cheng(5))
16.利用递归完成下面规律的实现
def fold(digit, num):
pass
fold(1, 2) ----> 2
fold(2, 2) -----> 22
fold(3, 2) -----> 222
fold(4, 2) -----> 2222
注:num只考虑1到9的数字
def fold(digit, num):
if digit == 1:
return num
return fold(digit - 1, num) * 10 + num
print(fold(4,2))
17.写一个装饰器,功能是计算指定功能的运行时间
例如:
@get_time
def table(): # 打印九九乘法表的功能
for r in range(1, 10):
for c in range(1, r + 1):
print('{}*{}={}'.format(c, r, r*c), end="\t")
print()
# 添加装饰器之后
table()
#结果:
1*1=1
1*2=2 2*2=4
.....
1*9=9 2*9=18 3*9=27 .... 9*9=81
执行时间是:....
import time
def get_time(fn):
def new_fn(*args, **kwargs):
start = time.clock()
fn(*args, **kwargs)
print(time.clock() - start)
return new_fn
@get_time
def table(): # 打印九九乘法表的功能
for r in range(1, 10):
for c in range(1, r + 1):
print('{}*{}={}'.format(c, r, r*c), end="\t")
print()
# 添加装饰器之后
table()
看完点个赞呗,谢谢!