我相信我明白你在這裏想要什麼。您希望能夠呼叫program
,以便在字符串中的每個字符上運行ord
,但是您還希望能夠對字符串中的每個字符運行(例如)chr
,而無需創建稱爲program_chr
的全新函數。
很高興,Python支持first-class functions,所以這是絕對有可能的。您可以將函數作爲參數傳遞給program
,就像傳遞字符串一樣簡單。
def program (my_str, my_fn):
i = 0
message = []
while i<len(my_str):
message.append(my_fn(my_str[i]))
i += 1
print(message)
program("my_string", ord)
此輸出[109, 121, 95, 115, 116, 114, 105, 110, 103]
,沒有ord
曾經出現在program
!
可以使用任何功能對於這一點,包括您自己定義:
def silly_fn (char):
return 12
program("my_string", silly_fn)
此輸出[12, 12, 12, 12, 12, 12, 12, 12, 12]
。
相關注:我改變了參數str
到my_str
,因爲str
是一個內置的功能,它的重新定義那些沒有很好的理由從來沒有很好的做法!
什麼shoukd的PROGRAMM到底如何呢? –
正如您從3種截然不同的答案中可以看出的那樣,您的問題與書面內容相當不清楚。考慮對其進行編輯以使其更加明顯,正是您所期待的(一個好的開始是包括示例輸入和期望的輸出)。 – KernelPanic