2021-01-17
題目:
【問題描述】已知10個四位數輸出所有對稱數及個數 n,例如1221、2332都是對稱數
【輸入形式】10個四位數,以空格分隔開
【輸出形式】輸入的四位數中的所有對稱數,對稱數個數
【樣例輸入】1221 2243 2332 1435 1236 5623 4321 4356 6754 3234
【樣例輸出】1221 2332 2
【樣例說明】為測試程序健壯性,輸入數中可能包括3位數、5位數等
代碼:
def is_duichen(n):#判斷是不是對稱,有的方法選擇直接利用第一位等於第四位,第二位等於第三位來判斷,也可。我選擇比較逆序,這樣應用范圍相對來說,更大一些,不僅限於4位數 a=list(n); a.reverse(); b=''.join(a); if n==b: return True else: return False
s=input();#將10個數字當作一個字符串輸入 sLst=s.split(' ');#將輸入的數字以空格分割,形成一個列表 m=0; Lst=[];#創建結果空列表 for i in sLst:#利用循環遍歷元素,找出符合條件的數字 if(is_duichen(i)): Lst.append(i);#將符合條件的數字加入到隊列中 m=m+1; Lst.append(m);#將個數也參加到列表中 print(" ".join(str(i) for i in Lst)) #將列表內容輸出,去掉列表格式
這個代碼其實看着挺簡單的,可是本小白愣是把該犯的錯誤一樣沒落,全都犯了......
- 關於輸出,本來是寫在循環里面的,但是發現這樣輸出的時候就會一個數一行,不符合要求。通過查資料,發現原來可以把結果都添加到一個列表中,nice。然后,發現個數也不能另起一行,那可以直接加到結果列表中啊。我真是個小機靈鬼...
- 關於計數,我剛開始寫在了函數里面,發現在主程序中輸出時顯示變量未定義......然后我轉向了主函數中的循環,結果發現計數只能到1,而且一直循環輸出......最后,我把它放在了主程序中循環外,利用循環計數,終於對了,呼。。