鱼C论坛

 找回密码
 立即注册
查看: 1315|回复: 3

[已解决]这个每次运算的结果,为什么与正常运算有些不一样,是我想错吗?

[复制链接]
发表于 2021-1-21 16:36:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. tump = int (input('请输入正整数:'))
  2. flash = tump
  3. a = 0
  4. while flash != 0:
  5.      a = a*10 + flash%10
  6.      flash = flash // 10
  7.      print(a,flash,sep = ' ')
  8.      '''不管输入一个多大的数,只要进行“地板除”后不为零,就继续进行运算。
  9.         a开始为零,每进行一次运算a就扩大十倍,并加上输入数字flash进行除10的取余的结果
  10.         这样就可以将数字进行顺序的的交换。
  11.         如12345,第一次a = 0.5   flash = 1234;第二次a = 5+0.4    flash = 123
  12.         第三次 a = 54+0.3  flash = 12  ; 第四次 a = 543+0.2 flash = 1;
  13.         第五次 a = 5432+0.1  flash = 0  '''
复制代码


运算结果:
请输入正整数:12345
5 1234
54 123
543 12
5432 1
54321 0
不是回文数。



这每次循环运算的结果,为什么和人运算的不一样啊!(第一次 a = 0.5,才正常啊!为什么输出的结果 a = 5    了呢?)

麻烦了!麻烦了! 麻烦了!
最佳答案
2021-1-21 16:39:52
本帖最后由 昨非 于 2021-1-21 17:03 编辑
(第一次 a = 0.5,才正常啊!为什么输出的结果 a = 5    了呢?)

那么请问你凭什么人计算的结果“12345取余10”为0.5呢?
取余的结果就应该是最后一位数,凭什么出现零点几?

  1. tump = int (input('请输入正整数:'))
  2. flash = tump
  3. a = 0
  4. while flash != 0:
  5.      a = a*10 + flash%10/10  #这里加个除以十就好了
  6.      flash = flash // 10
  7.      print(a,flash,sep = ' ')
  8.      '''不管输入一个多大的数,只要进行“地板除”后不为零,就继续进行运算。
  9.         a开始为零,每进行一次运算a就扩大十倍,并加上输入数字flash进行除10的取余的结果
  10.         这样就可以将数字进行顺序的的交换。
  11.         如12345,第一次a = 0.5   flash = 1234;第二次a = 5+0.4    flash = 123
  12.         第三次 a = 54+0.3  flash = 12  ; 第四次 a = 543+0.2 flash = 1;
  13.         第五次 a = 5432+0.1  flash = 0  '''
复制代码


测试结果:
  1. 0.5 1234
  2. 5.4 123
  3. 54.3 12
  4. 543.2 1
  5. 5432.1 0
复制代码


既然代码的目的是为了判断回文数,那么理应不用修改的,(所以代码没错,是“人”想错了
a只是将flash的各位数字颠倒过来,然后只需要根据循环后
a与tump是否相等即可判断回文

我猜,你应该是误把%取余号当成了除号/,才会出现注释上的错误。。。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-21 16:39:52 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2021-1-21 17:03 编辑
(第一次 a = 0.5,才正常啊!为什么输出的结果 a = 5    了呢?)

那么请问你凭什么人计算的结果“12345取余10”为0.5呢?
取余的结果就应该是最后一位数,凭什么出现零点几?

  1. tump = int (input('请输入正整数:'))
  2. flash = tump
  3. a = 0
  4. while flash != 0:
  5.      a = a*10 + flash%10/10  #这里加个除以十就好了
  6.      flash = flash // 10
  7.      print(a,flash,sep = ' ')
  8.      '''不管输入一个多大的数,只要进行“地板除”后不为零,就继续进行运算。
  9.         a开始为零,每进行一次运算a就扩大十倍,并加上输入数字flash进行除10的取余的结果
  10.         这样就可以将数字进行顺序的的交换。
  11.         如12345,第一次a = 0.5   flash = 1234;第二次a = 5+0.4    flash = 123
  12.         第三次 a = 54+0.3  flash = 12  ; 第四次 a = 543+0.2 flash = 1;
  13.         第五次 a = 5432+0.1  flash = 0  '''
复制代码


测试结果:
  1. 0.5 1234
  2. 5.4 123
  3. 54.3 12
  4. 543.2 1
  5. 5432.1 0
复制代码


既然代码的目的是为了判断回文数,那么理应不用修改的,(所以代码没错,是“人”想错了
a只是将flash的各位数字颠倒过来,然后只需要根据循环后
a与tump是否相等即可判断回文

我猜,你应该是误把%取余号当成了除号/,才会出现注释上的错误。。。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-21 16:42:39 | 显示全部楼层
  1. tump = int (input('请输入正整数:'))
  2. flash = tump
  3. a = 0
  4. while flash != 0:
  5.      a = a*10 + flash%10
  6.      flash = flash // 10
  7. if a == tump:
  8.     print(tump , '是回文数')
  9. else:
  10.     print(tump , '不是回文数')
复制代码

        这个代码有什么问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-21 17:07:27 | 显示全部楼层
jackz007 发表于 2021-1-21 16:42
这个代码有什么问题吗?

没问题,是我没了解%这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 03:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表