題目
假定有下面這樣的列表:
spam = ['apples', 'bananas', 'tofu', 'cats']
編寫一個函數,它以一個列表值作為參數,返回一個字符串。該字符串包含所有表項,表項之間以逗號和空格分隔,并在最后一個表項之前插入and。例如,將前面的spam 列表傳遞給函數,將返回'apples, bananas, tofu, and cats'。但你的函數應該能夠處理傳遞給它的任何列表。
組長的建議:因為是列表這章的習題,所以要盡量使用列表的知識去解決問題,這樣才能達到學習的目的。
組長的思路:
1.先將and加入列表
2.在將逗號和空格加入,形成一個字符串
3.使用strip方法和rstrip方法去掉多余的空格和逗號
代碼
list= ['apples', 'bananas', 'tofu', 'cats']
list.insert(len(list)-1,'and')
value=''
for i in list:
? ? ?value=value+i+', '
result=value.strip().rstrip(',')
print(result)
小知識點:strip函數、lstrip函數和rstrip函數
聲明:s為字符串,rm為要刪除的字符序列
s.strip(rm)??????? 刪除s字符串中開頭、結尾處,位于 rm刪除序列的字符
s.lstrip(rm)?????? 刪除s字符串中開頭處,位于 rm刪除序列的字符
s.rstrip(rm)????? 刪除s字符串中結尾處,位于 rm刪除序列的字符
注意:
1. 當rm為空時,默認刪除空白符(包括'\n', '\r',? '\t',? ' ')
?2.這里的rm刪除序列是只要邊(開頭或結尾)上的字符在刪除序列內,就刪除掉,不看順序。
個人思路
通過字符串連接,將列表的表項連接到同一個字符串上。
邏輯
如果列表下標不是最后一個,則格式為列表表項加逗號和空格
否則為and加最后一個表項
程序
def string(list):
? ? ? ? s=''
? ? ? ? for i in range(len(list)):
? ? ? ? ? ? ? ?if i!=len(list)-1:
? ? ? ? ? ? ? ? ? ? ? ? s=s+str(list[i])+', '
? ? ? ? ? ? ? ?else:
? ? ? ? ? ? ? ? ? ? ? ? s=s+'and '+str(list[i])
? ? ? ? ? ? ? ? ? ? ? ? print(s)
def addList(List):
? ? ? ? ? ? ?a = input()
? ? ? ? ? ? ?if a == '0':
? ? ? ? ? ? ? ? ? ? ?print(List)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? List.append(a)
? ? ? ? ? ? ? ? ? ? ?addList(List)
? ? ? ? ? ? ? ?return List
q=addList([])
string(q)
運行結果