- 寫一個(gè)匿名函數(shù)龙填,判斷指定的年是否是閏年
leap_year = lambda year: ((not year % 4) and year % 100 != 0) or not year % 400
- 寫一個(gè)函數(shù)將一個(gè)指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自帶的逆序函數(shù))
my_reverse = lambda list1: list1[::-1]
- 寫一個(gè)函數(shù)闲昭,獲取指定列表中指定元素的下標(biāo)(如果指定元素有多個(gè),將每個(gè)元素的下標(biāo)都返回)
例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回:0,3
def my_index(list1: list, element):
result = []
for index in range(len(list1)):
if list1[index] == element:
result.append(index)
if not result:
return -1
return result
- 寫一個(gè)函數(shù),能夠?qū)⒁粋€(gè)字典中的鍵值對(duì)添加到另外一個(gè)字典中(不使用字典自帶的update方法)
def dict_update(dict1: dict, dict2: dict):
for key in dict2:
dict1[key] = dict2[key]
return dict1
- 寫一個(gè)函數(shù),能夠?qū)⒅付ㄗ址械乃械男懽帜皋D(zhuǎn)換成大寫字母熟吏;所有的大寫字母轉(zhuǎn)換成小寫字母(不能使用字符串相關(guān)方法)
def transform(str1: str):
for i in range(len(str1)):
if 'a' <= str1[i] <= 'z':
str1 = str1[:i] + chr(ord(str1[i])-32) + str1[i+1:]
elif 'A' <= str1[i] <= 'Z':
str1 = str1[:i] + chr(ord(str1[i])+32) + str1[i+1:]
return str1
- 實(shí)現(xiàn)一個(gè)屬于自己的items方法炮温,可以將指定的字典轉(zhuǎn)換成列表。列表中的元素是小的列表奕塑,里面是key和value (不能使用字典的items方法)
例如:{'a':1, 'b':2} 轉(zhuǎn)換成 [['a', 1], ['b', 2]]
def dict_list(dict1: dict):
list1 = []
for key in dict1:
list1.append([key, dict1[key]])
return list1
- 用遞歸函數(shù)實(shí)現(xiàn)堂污,逆序打印一個(gè)字符串的功能:
例如:reverse_str('abc') -> 打印 ‘cba’
def reverse_str(str1: str):
if len(str1) == 1 or len(str1) == 0:
return str1
return str1[-1] + reverse_str(str1[:-1])
- 編寫一個(gè)遞歸函數(shù),求一個(gè)數(shù)的n次方
def nums(m: int, n: int):
if n == 0:
return 1
elif n > 0:
return m * nums(m, n-1)
else:
return (1/m) * nums(m, n + 1)
- 寫一個(gè)可以產(chǎn)生學(xué)號(hào)的生成器, 生成的時(shí)候可以自定制學(xué)號(hào)數(shù)字位的寬度和學(xué)號(hào)的開頭
例如:
study_id_creater('py',5) -> 依次產(chǎn)生: 'py00001', 'py00002', 'py00003',....
study_id_creater('test',3) -> 依次產(chǎn)生: 'test001', 'test002', 'test003',...
def student_number(str1: str, n: int):
for x in range(1, 10**n):
yield str1 + str(x).zfill(n)
study_id_creator = student_number('py', 5)
print(next(study_id_creator))
- 編寫代碼模擬達(dá)的鼠的小游戲龄砰,
假設(shè)一共有5個(gè)洞口盟猖,老鼠在里面隨機(jī)一個(gè)洞口;
人隨機(jī)打開一個(gè)洞口换棚,如果有老鼠式镐,代表抓到了
如果沒有,繼續(xù)打地鼠固蚤;但是地鼠會(huì)跳到其他洞口
import random
def shrews():
while True:
shrew = random.randint(1, 5)
print('地鼠選擇洞口%d' % shrew)
people = random.randint(1, 5)
print('人選擇洞口%d' % people)
if shrew == people:
print('打中了娘汞!')
yield
else:
print('沒打中繼續(xù)打地鼠!')
my_shrews = shrews()
next(my_shrews)
- 編寫一個(gè)函數(shù)夕玩,計(jì)算一個(gè)整數(shù)的各位數(shù)的平方和
例如: sum1(12) -> 5 sum1(123) -> 14
def quadratic_sum(num: int):
str_num = str(num)
sum1 = 0
for char in str_num:
sum1 += int(char) ** 2
return sum1
- 樓梯有n階臺(tái)階价说,上樓可以一步上1階,也可以一步上2階风秤,編程序計(jì)算共有多少種不同的走法鳖目?需求: 編制一個(gè)返回值為整型的函數(shù)Fib(n),用于獲取n階臺(tái)階的走法(掙扎一下)
def fib(n):
if n == 1 or n == 2:
return n
return fib(n-1) + fib(n-2)
- 寫一個(gè)函數(shù)對(duì)指定的數(shù)分解因式
例如: mab(6) —> 打印: 2 3 mab(3) -> 1 3 mab(12) -> 2 2 3
def mab(n):
nums = []
while n > 1:
for i in range(2, n+1):
if n % i == 0:
n //= i
nums.append(i)
break
if len(nums) == 1:
nums.insert(0, 1)
return nums
return nums
- 寫一個(gè)函數(shù)判斷指定的數(shù)是否是回文數(shù)
123321是回文數(shù) 12321是回文數(shù) 525是回文數(shù)
def pal_num(num):
str_num = str(num)
if str_num == str_num[::-1]:
return True
return False
- 寫一個(gè)函數(shù)判斷一個(gè)數(shù)是否是丑數(shù)(自己百度丑數(shù)的定義)
def ugly(num):
if num == 1:
return False
else:
while num % 2 == 0:
num //= 2
while num % 3 == 0:
num //= 3
while num % 5 == 0:
num //= 5
if num == 1:
return True
return False