这个每次运算的结果,为什么与正常运算有些不一样,是我想错吗?
tump = int (input('请输入正整数:'))flash = tump
a = 0
while flash != 0:
a = a*10 + flash%10
flash = flash // 10
print(a,flash,sep = ' ')
'''不管输入一个多大的数,只要进行“地板除”后不为零,就继续进行运算。
a开始为零,每进行一次运算a就扩大十倍,并加上输入数字flash进行除10的取余的结果
这样就可以将数字进行顺序的的交换。
如12345,第一次a = 0.5 flash = 1234;第二次a = 5+0.4 flash = 123
第三次 a = 54+0.3flash = 12; 第四次 a = 543+0.2 flash = 1;
第五次 a = 5432+0.1flash = 0'''
运算结果:
请输入正整数:12345
5 1234
54 123
543 12
5432 1
54321 0
不是回文数。
这每次循环运算的结果,为什么和人运算的不一样啊!(第一次 a = 0.5,才正常啊!为什么输出的结果 a = 5 了呢?)
麻烦了!麻烦了! 麻烦了! 本帖最后由 昨非 于 2021-1-21 17:03 编辑
(第一次 a = 0.5,才正常啊!为什么输出的结果 a = 5 了呢?)
那么请问你凭什么人计算的结果“12345取余10”为0.5呢?
取余的结果就应该是最后一位数,凭什么出现零点几?
tump = int (input('请输入正整数:'))
flash = tump
a = 0
while flash != 0:
a = a*10 + flash%10/10#这里加个除以十就好了
flash = flash // 10
print(a,flash,sep = ' ')
'''不管输入一个多大的数,只要进行“地板除”后不为零,就继续进行运算。
a开始为零,每进行一次运算a就扩大十倍,并加上输入数字flash进行除10的取余的结果
这样就可以将数字进行顺序的的交换。
如12345,第一次a = 0.5 flash = 1234;第二次a = 5+0.4 flash = 123
第三次 a = 54+0.3flash = 12; 第四次 a = 543+0.2 flash = 1;
第五次 a = 5432+0.1flash = 0'''
测试结果:
0.5 1234
5.4 123
54.3 12
543.2 1
5432.1 0
既然代码的目的是为了判断回文数,那么理应不用修改的,(所以代码没错,是“人”想错了)
a只是将flash的各位数字颠倒过来,然后只需要根据循环后
a与tump是否相等即可判断回文
我猜,你应该是误把%取余号当成了除号/,才会出现注释上的错误。。。
tump = int (input('请输入正整数:'))
flash = tump
a = 0
while flash != 0:
a = a*10 + flash%10
flash = flash // 10
if a == tump:
print(tump , '是回文数')
else:
print(tump , '不是回文数')
这个代码有什么问题吗? jackz007 发表于 2021-1-21 16:42
这个代码有什么问题吗?
没问题,是我没了解%这个
页:
[1]