赋值:编写一个包含两个自然数n和k的corkscrew函数。该函数必须返回以应用corkscrew方法得到的数字k结尾的n-寄生数。函数可以假设n和k都是一位数的自然数,k≥n
示例:
corkscrew (5, 7)
5 x 7 = 35
5 x 57 = 285
5 x 857 = 4285
5 x 2857 = 14285
5 x 42857 = 214285
5 x 142857 = 714285
问题:我的代码在for循环中,因此res的结果不会改变,也不会演变成n-寄生数。你知道吗
def parasitic(number):
"""
>>> parasitic(179487)
4
>>> parasitic(142857)
5
>>> parasitic(105263157894736842)
2
>>> parasitic(1234)
0
"""
for n in range(2, 11):
res = n * number
if str(number)[-1] + str(number)[:-1] == str(res):
return n
return 0
def corkscrew(n, number):
"""
>>> corkscrew(4, 7)
179487
>>> corkscrew(5, 7)
142857
>>> corkscrew(2, 2)
105263157894736842
"""
res = n * number
count = 0
for i in range(1, n):
res = n * (str(res)[-i:] + str(number))
count += 1
if parasitic(number) == n:
return rotateLeft(res)
def rotateLeft(number):
"""
>>> rotateLeft(717948)
179487
>>> rotateLeft(142857)
428571
>>> rotateLeft(105263157894736842)
52631578947368421
"""
k = str(number)
letter = k[:1]
numb = k[1:]
resultaat = str(numb) + str(letter)
return int(resultaat)
回答有效的问题:
相关问题 更多 >
编程相关推荐