|
发表于 2022-9-20 23:20:33
|
显示全部楼层
本帖最后由 jcpython2 于 2022-9-20 23:26 编辑
老哥能否帮我看看我的代码
我理解楼主的题目是
- 输入六位整数N
- 分别乘以2-9
- 那一个结果得出的数是由N里各种数字组成的
- 例:
- 输入561307
- 得出 9
复制代码
以下是我的菜鸟代码,请忽略我那些菜鸟备注,请告诉一下我,我的代码思路是否正确? 能怎么简化?
- #输入 s 六位数
- s = int(input())
- r = [2,9] #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 敏合的有 [9]
复制代码
|
|