第一題
現有檔案info.txt, 其內容如下:
alpha male 18 1000
bravo male 28 2000
charlie female 38 3000
delta female 48 4000
從檔案中取出每一條記錄放入列表中,列表的每個元素都是{'name':'alpha','gender':'male','age':18,'salary':1000}
的形式
- 根據1得到的列表,取出薪資最高的人的資訊
- 根據1得到的列表,取出最年輕的人的資訊
- 根據1得到的列表,將每個人的資訊中的名字對映成首字母大寫的形式
- 根據1得到的列表,過濾掉名字以a開頭的人的資訊
# 1
info_list = []
with open('info.txt', 'rt', encoding='utf-8') as f:
for line in f:
info_split_list = (line.strip().split(' '))
name, gender, age, salary = info_split_list
info_dict = {'name': name, 'gender': gender, 'age': age, 'salary': salary}
info_list.append(info_dict)
print(info_list)
# 2
max_salary_info = max(info_list, key=lambda dic: dic['salary'])
print(max_salary_info)
# 3
min_age_info = min(info_list, key=lambda dic: dic['age'])
print(min_age_info)
# 4
new_info_list = map(lambda dic: {'name': dic['name'].capitalize(),
'gender': dic['gender'],
'age': dic['age'],
'salary': dic['salary']}, info_list)
print(list(new_info_list))
# 5
res = filter(lambda dic: dic['name'][0] != 'a', info_list)
print(list(res))
第二題
使用遞迴列印斐波那契數列(前兩個數的和得到第三個數,如:0 1 1 2 3 4 7...)
num1 = 0
num2 = 1
num = 0
#Python學習交流群:153708845
def fibo(end):
'''斐波那契數列'''
global num1, num2, num
print(num)
num1 = num2
num2 = num
num = num1 + num2
if num > end:
return
func(end)
func(20)
第三題
一個巢狀很多層的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]
,用遞迴取出所有的值
def get(lis):
for i in lis:
if type(i) == list:
get(i)
else:
print(i)
get(l)