我的任務是:“使用reduce連接所有國家并產生這句話:愛沙尼亞、芬蘭、瑞典、丹麥、挪威和冰島是北歐國家”,使用串列。
這是串列和我的代碼:
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
def makesentence(a,b,c,d,e,f):
return a "," b "," c "," d "," e ", and" f "are north European countries"
print(reduce(makesentence,countries))
但我得到 TypeError: makesentence() missing 4 required positional arguments: 'c', 'd', 'e', and 'f'
如果我寫的東西沒有錯誤:
countries = ['Estonia', 'Finland']
print(reduce(lambda a,b:a "," b "," "are north European countries",countries))
問題是什么?我真的很困惑。
uj5u.com熱心網友回復:
reduce()使用兩個引數呼叫函式:https : //docs.python.org/3/library/functools.html#functools.reduce
但是,你makesentence()提供了6 -所以c,d,e和f未設定。
目前還不清楚你想做什么。
如果您已經有一個接受所有引數的函式,則可以呼叫它,例如:
# python2
print(apply(makesentence,countries))
# python3
print(makesentence(*countries))
您已經reduce()在問題中使用撰寫了版本。
uj5u.com熱心網友回復:
def makesentence(countries):
result = ""
for i in range(len(countries) - 1):
result = countries[i] ", "
result = "and" countries[-1] "are north European countries"
return result
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
print(makesentence(countries))
uj5u.com熱心網友回復:
我認為你不需要為此減少。就這么簡單:
countries = ['Estonia', 'Finland', 'Sweden', 'Denmark', 'Norway', 'Iceland']
def makesentence(c):
return ', '.join(c[:-1]) ' and ' c[-1] ' are north European countries'
print(makesentence(countries))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394085.html
上一篇:一道演算法題-跳躍游戲 II
下一篇:【C語言學習】 猜數字游戲
