我正在通过pyschool学习python,我遇到了解决以下问题的问题。
编写一个函数
printTwos(n)
,它接受一个数字作为参数和 返回一个由奇数乘以2s组成的字符串 最终值等于n
。应该有相同数量的2 双方。额外2应出现在字符串的前面。注意: 奇数的值可以是1.
实施例
>>> printTwos(1)
'1'
>>> printTwos(2)
'2 * 1'
>>> printTwos(10)
'2 * 5'
>>> printTwos(20)
'2 * 5 * 2'
>>> printTwos(30)
'2 * 15'
>>> printTwos(32)
'2 * 2 * 2 * 1 * 2 * 2'
>>> printTwos(80)
'2 * 2 * 5 * 2 * 2'
我相信我有它的工作。
def printTwos(n):
count = 0
if n == 1:
return '1'
if n == 2:
return '2 * 1'
while n%2 == 0:
n = n/2
count +=1
if count%2 == 0:
twos = count/2
myoutput = ('2 * ' * twos, str(n), ' * 2' * twos)
return ''.join(myoutput)
else:
twos = count/2
twofront = twos+1
myoutput = ('2 * ' * twofront, str(n), ' * 2' * twos)
return ''.join(myoutput)
答案 0 :(得分:0)
这有效:
def printTwos(n):
if(n%2==1):return str(n)
else:
if(n%4==0):return str('2 * ')+ printTwos(n/4) +str(' * 2')
else: return str('2 * ')+ printTwos(n/2)