• 完成 python 教程。
6 函式式程式設計 (一)
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
練習1:利用map()
函式,把使用者輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。輸入:['adam', 'lisa', 'bart']
,輸出:['adam', 'lisa', 'bart']
:
def normalize(name):
return (name[:1].upper()+name[1:].lower())
# 測試:
l1 = ['adam', 'lisa', 'bart']
l2 = list(map(normalize, l1))
print(l2)
練習2:python提供的sum()
函式可以接受乙個list並求和,請編寫乙個prod()
函式,可以接受乙個list並利用reduce()
求積:
# -*- coding: utf-8 -*-
from functools import reduce
def prod(l):
return reduce(lambda x,y:x*y,l)
print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))
if prod([3, 5, 7, 9]) == 945:
print('測試成功!')
else:
print('測試失敗!')
練習3: 利用map
和reduce
編寫乙個str2float
函式,把字串'123.456'
轉換成浮點數123.456
:
# -*- coding: utf-8 -*-
from functools import reduce
def str2float(s):
digits =
intnum, floatnum = s.split('.')
def fn(x, y):
return x * 10 + y
def char2num(s):
return digits[s]
intnum = reduce(fn, map(char2num, intnum))
floatnum = 10**(-len(floatnum)) * reduce(fn, map(char2num, floatnum))
return intnum + floatnum
練習:回數是指從左向右讀和從右向左讀都是一樣的數,例如12321
,909
。請利用filter()
篩選出回數:
# -*- coding: utf-8 -*-
def is_palindrome(n):
return str(n)[:] == str(n)[::-1]
# 測試:
output = filter(is_palindrome, range(1, 1000))
print('1~1000:', list(output))
if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:
print('測試成功!')
else:
print('測試失敗!')
系統學習程式設計筆記(二)
電腦科學cs50 第1集 演算法,程式設計,語言等 這門課程是哈佛大學的,這個老師富有活力和激情,我的第一反應,不是覺得自己在聽課,而是覺得自己在欣賞乙個話劇,對,就是這種話劇的感覺。相比於之前在大學裡面上過的略感枯燥的計算機相關的課程,驚嘆於世界頂尖學府的教學水平。第一節課是緒論,一般來說,感覺緒...
系統學習程式設計筆記(七)
電腦科學cs50 第3集 c語言,源 編譯器 1 本集主要介紹了c語言編寫的乙個hello world程式,使用的是gcc編譯器,採用的是連線伺服器進行 的編譯和執行,而其實這是工業界經常採用的方式。原來csv檔案其實是用 分割儲存的文字檔案,只是開啟的時候看起來像excel檔案。詳細介紹了一些轉義...
linux系統學習筆記
一 軟體包安裝 原始碼包安裝 二進位製包安裝 二 rhel 7系統管理 使用systemctl命令管理服務 man命令幫助資訊 常用命令 reboot 用於重啟系統。格式為reboot,預設為系統管理員重啟 poweroff 用於關閉系統,其格式為poweroff,預設為系統管理員關閉 ps 用於檢...