[問題] 求左右對稱的數字和總數

作者: st936904 (阿姆斯特朗旋風噴射阿姆)   2016-11-11 02:44:45
大家好 我是自學的新手
題目是: 找出n位數中有幾個迴文數
迴文數是指例如121,1331,22,15151
這種左右顛到寫過來仍是一樣的數
我的寫法
def f(x):
x = str(x)
if x[::]==x[::-1]:
return Ture
else :
return False
def f_count(n) :
for i in range(10,10**n):
count=0
while f(i) is Ture :
count +=1
return (count)
第一個函數是說輸入一個數判斷他是不是迴文數
然後第二個函數是指輸入n位數(例如2位數)
然後符合第一個函數的情況下就+1
可是我下去跑不管n是幾
print(f_count(n))的答案跑下去都是0
請問到底是哪邊出了問題還是我哪邊的觀念錯誤呢?
作者: uranusjr (←這人是超級笨蛋)   2016-11-11 02:48:00
while f(i) is Ture 試著解釋這行的意思
作者: wtf111 (Optimus)   2016-11-11 03:29:00
我想表達如果他符合第一個函數就數量就+1 我也覺得這邊用錯誤的方式表達這句 只是試了一個多小時還是想不透
作者: MOONY135 (談無慾)   2016-11-11 06:19:00
While f(I):你每跑一次迴圈count都從0開始 是能記多少次...加上你最後一個數字是10的某個次方 那肯定不會進while迴圈啊 所以答案總是0
作者: papple23g (逆道者)   2016-11-11 09:20:00
True
作者: losepacific (Losepacific)   2016-11-11 20:14:00
count=0提到for迴圈的外面,while改用if;注意縮排。修正錯字True之後,按照你貼文的縮排,應該會是1。
作者: st936904 (阿姆斯特朗旋風噴射阿姆)   2016-11-12 01:24:00
各位我懂了! 我這邊是因為count的位置放錯以及要把while改成if 會成功。然後True打錯滿丟臉的。謝謝樓上幾位教學,順帶一下像這種位置問題我常常會搞混是因為不夠習慣才會這樣嗎?
作者: MOONY135 (談無慾)   2016-11-12 20:29:00
不是不夠習慣的問題 是你根本還弄不懂迴圈在幹嘛http://www.codeskulptor.org/viz/index.html這個線上編譯器有跑你每一步的功能 可以拿來練習先把基本教程 for迴圈while迴圈那些都看完再說吧雖然每本程式書都會教那個 不過那是要會某種語言之後才可以跳過的
作者: st936904 (阿姆斯特朗旋風噴射阿姆)   2016-11-12 23:47:00
M大太感謝你了 我就是想要找一個這種能知道我在幹嘛的東西
作者: edisonhello (edison)   2016-11-13 19:40:00
這題根本用不到迴圈吧
作者: MOONY135 (談無慾)   2016-11-14 06:46:00
最終都還是要學編譯器debug的 這些簡單的用這款還行

Links booklink

Contact Us: admin [ a t ] ucptt.com