1、沒有使用循環對整個列表進行處理,使得只是處理了第二個元素。按照原程序的思路,
if num < len(my_list):
應該改成
while num < len(my_list):
2、如果改為使用while語句,原程序對列表元素的處理算法存在邏輯錯誤:因為循環到壹個大寫字母後,會在原位置插入空格,再次循環後,會對空格進行處理;移動到下壹個位置後又正好是原來已經處理過得大寫字母。如此,會進入死循環。
請參考以下代碼:
num = 1
while num < len(my_list):
if my_list[num] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': # 這種方式更簡潔
my_list[num]=my_list[num].lower() # 轉換成小寫字母
my_list.insert(num, ' ') # 在該位置插入空格
num += 2 # 跳過插入空格及該字母
else:
num += 1
my_str = ''.join(my_list)