kittenpuppy 发表于 2021-2-7 21:05:37

我又来啦,请大家帮忙

问题是这样的:就是快速求一个数字,这个数字是一个6位数,以85开头,最后两位数字相同,并且这个6位数能同时被13和33整除,求这个六位数。
如果程序这样(很笨,不要笑话我{:9_240:} ):
for i in range(850000,859999):
    if i %13==0 and i%33==0:
      print(i)
得出好多六位数:
850278
850707
851136
851565
851994
852423
852852
853281
853710
854139
854568
854997
855426
855855
856284
856713
857142
857571
858000
858429
858858
859287
859716
可以看到其中858000和855855是符合题目要求的。
但是我把程序写具体点:
for i in range(850000,859999):
    if i %13==0 and i%33==0:
      a = i%10
      b = i%100/10
      if a==b:
            print(i)
得出的结果就只有一个数字:858000
不知道问题出在哪里了?所以只能来求助啦!先谢过

qiuyouzhi 发表于 2021-2-7 21:08:38

你取数字倒数第二位的方法不对
for i in range(850000, 860000):
    if i % 13 == 0 and i % 33 == 0:
      a = i % 10
      b = i // 10 % 10
      if a == b:
            print(i)
改过来就好了

昨非 发表于 2021-2-7 21:10:20

本帖最后由 昨非 于 2021-2-7 21:12 编辑

因为b = i%100/10的除法/得到的是float型的数,
强制转换为整型恰好是你想要的倒数第二位数

for i in range(850000,859999):
    if i %13==0 and i%33==0:
      a = i%10
      b = int(i%100/10)#转为int就好了
      if a==b:
            print(i)

测试:
855855
858000

kittenpuppy 发表于 2021-2-7 21:12:19

你们都秒回啊,感谢感谢,脑子真的不够用啊,经常处于一筹莫展的状态

昨非 发表于 2021-2-7 21:13:13

kittenpuppy 发表于 2021-2-7 21:12
你们都秒回啊,感谢感谢,脑子真的不够用啊,经常处于一筹莫展的状态

{:10_266:}还是慢了

°蓝鲤歌蓝 发表于 2021-2-7 21:16:02

for i in range(850000, 859999):
    if i % 13 == 0 and i % 33 == 0:
      a = i % 10
      b = i % 100 // 10
      if a == b:
            print(i)


a / b 除不尽的话返回的是浮点数, a // b 地板除才会返回整数部分

kittenpuppy 发表于 2021-2-7 21:17:45

本帖最后由 kittenpuppy 于 2021-2-7 21:24 编辑

谢谢上面的三位朋友,手动献花

昨非 发表于 2021-2-7 21:19:23

kittenpuppy 发表于 2021-2-7 21:17
谢谢上面的两位朋友,手动献花

没有最佳也可以点击右下角的【评分】
加个荣誉贡献啥的,也算对我们的鼓励哟{:10_278:}

kittenpuppy 发表于 2021-2-7 21:24:00

昨非 发表于 2021-2-7 21:19
没有最佳也可以点击右下角的【评分】
加个荣誉贡献啥的,也算对我们的鼓励哟

好咧,不熟悉论坛,现在已经评分啦

昨非 发表于 2021-2-7 21:25:00

kittenpuppy 发表于 2021-2-7 21:24
好咧,不熟悉论坛,现在已经评分啦

没事的,有问题随便问
慢慢就熟悉啦{:10_297:}
页: [1]
查看完整版本: 我又来啦,请大家帮忙