DragonYu 发表于 2022-9-20 11:33:09

关于魔数的代码

输入一个六位数,然后它乘以一个2-9的个位数 得出的结果是由本身六位数的数字组成


求大神帮忙!!!

wp231957 发表于 2022-9-20 11:52:28

这是特定的6位数乘以特定的数
还是任意六位数都有这个特性

Twilight6 发表于 2022-9-20 12:10:28

题目有些潦草了,六位数是一定都要含有,还是只要结果都是六位数中的数字就行?

后者代码简单些,参考代码:

numStr = input(">>> ")

for i in range(2, 10):
    result = str(int(numStr) * i)
    for j in result:
      if j not in numStr:
            break
    else:
      print(f"{numStr} * {i}: {result}")

测试输出:

>>> 561307
561307 * 9: 5051763

>>> 167349
167349 * 4: 669396
167349 * 7: 1171443

DragonYu 发表于 2022-9-20 14:26:22

Twilight6 发表于 2022-9-20 12:10
题目有些潦草了,六位数是一定都要含有,还是只要结果都是六位数中的数字就行?

后者代码简单些,参考代 ...

就结果是由我输入的六位数 组成即可

DragonYu 发表于 2022-9-20 14:27:00

wp231957 发表于 2022-9-20 11:52
这是特定的6位数乘以特定的数
还是任意六位数都有这个特性

任意六位数

DragonYu 发表于 2022-9-20 14:32:49

DragonYu 发表于 2022-9-20 14:26
就结果是由我输入的六位数 组成即可

输入六位数 里面任意数字 组成的结果

Twilight6 发表于 2022-9-20 14:43:14

DragonYu 发表于 2022-9-20 14:26
就结果是由我输入的六位数 组成即可



有点没理解,我上面代码算实现了吗?

DragonYu 发表于 2022-9-20 15:17:19

Twilight6 发表于 2022-9-20 14:43
有点没理解,我上面代码算实现了吗?

我给你举个例子把比如我输入123456分别乘了2-9后就分别为这些结果 要由123456每个数字组成如果结果出现123456之外的数字就不是

Twilight6 发表于 2022-9-20 16:46:53

DragonYu 发表于 2022-9-20 15:17
我给你举个例子把比如我输入123456分别乘了2-9后就分别为


123456 倘若结果为 11111111 算不算?

还是前者含有的数字,得到的结果必须都含有 即 必须有 1~6 各数字至少一个

DragonYu 发表于 2022-9-20 17:27:54

Twilight6 发表于 2022-9-20 16:46
123456 倘若结果为 11111111 算不算?

还是前者含有的数字,得到的结果必须都含有 即 必须有 1~6...

DragonYu 发表于 2022-9-20 17:29:03

DragonYu 发表于 2022-9-20 17:27


123456里面随便一个都行

Twilight6 发表于 2022-9-20 17:31:03

DragonYu 发表于 2022-9-20 17:29
123456里面随便一个都行



那3L的代码就已经实现了,有什么问题吗?

jcpython2 发表于 2022-9-20 23:20:33

本帖最后由 jcpython2 于 2022-9-20 23:26 编辑

Twilight6 发表于 2022-9-20 17:31
那3L的代码就已经实现了,有什么问题吗?

老哥能否帮我看看我的代码

我理解楼主的题目是
输入六位整数N
分别乘以2-9
那一个结果得出的数是由N里各种数字组成的

例:
输入561307
得出 9

以下是我的菜鸟代码,请忽略我那些菜鸟备注,请告诉一下我,我的代码思路是否正确? 能怎么简化?



#输入 s 六位数
s = int(input())
r = #r=2-9
total = 0 #敏合次数
ok = [] #符合条件的列表

#循环取出2-9代入i
for i in range(2,10):#要验证2-9包含9则range需到10,10 不验证
#待验证数n = s * i(如S *2)
    total = 0
    n = s * i
    print('验证',i,',','i:',i,'* s:',s,'n=',n,)
#循环y in n
    for y in str(n):         #n为int不能迭代,需转为str
      if y in str(s):      #y此时代表着待验证数n的数值,逐个抽取去和s碰撞
            total += 1
      else:
            print('n:',n,'内的:',y,'不在',s,'跳出循环')
            break             #只要有一个y不在s直接break,此break跳过14行循环回到第8行循环,但会继续执行第20行代码
    if total == len(str(n)):
      print(i,'符合加入列表')
      ok.append(i)

print()
print('当s=',s,'敏合的有',ok)



输出
561307
验证 2 , i: 2 * s: 561307 n= 1122614
n: 1122614 内的: 2 不在 561307 跳出循环
验证 3 , i: 3 * s: 561307 n= 1683921
n: 1683921 内的: 8 不在 561307 跳出循环
验证 4 , i: 4 * s: 561307 n= 2245228
n: 2245228 内的: 2 不在 561307 跳出循环
验证 5 , i: 5 * s: 561307 n= 2806535
n: 2806535 内的: 2 不在 561307 跳出循环
验证 6 , i: 6 * s: 561307 n= 3367842
n: 3367842 内的: 8 不在 561307 跳出循环
验证 7 , i: 7 * s: 561307 n= 3929149
n: 3929149 内的: 9 不在 561307 跳出循环
验证 8 , i: 8 * s: 561307 n= 4490456
n: 4490456 内的: 4 不在 561307 跳出循环
验证 9 , i: 9 * s: 561307 n= 5051763
9 符合加入列表

当s= 561307 敏合的有

Twilight6 发表于 2022-9-21 07:37:07

jcpython2 发表于 2022-9-20 23:20
老哥能否帮我看看我的代码

我理解楼主的题目是




没毛病,一个小优化就是 if total == len(str(n)): 可以改写成 else:

qq1151985918 发表于 2022-9-21 09:53:55

def isRight(res, inum):
    if set(str(res)).issubset(set(str(inum))):
      return True
    return False

if __name__ == '__main__':
    for inum in range(100000, 1000000):
      for coefficient in range(2, 10):
            res = inum * coefficient
            if isRight(res, inum):
                print(f'{inum} * {coefficient} = {res}')
页: [1]
查看完整版本: 关于魔数的代码