[问题] 求左右对称的数字和总数

楼主: 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