返回前缀为0的数字的字符串

时间:2013-06-05 04:41:27

标签: python function loops

我不明白这个问题而且很困惑。有人能告诉我吗?这是一本python书中的练习。只能使用循环和功能。并且基于这个问题,必须要求用户输入数字和宽度。

def format(number, width):
  

该函数返回前缀为0的数字的字符串。尺寸   字符串的宽度。例如,格式(34,4)返回“0034”   格式(34,5)返回“00034”。如果数字长于   width,该函数返回数字的字符串表示形式。   例如,格式(34,1)返回“34”。

2 个答案:

答案 0 :(得分:0)

尝试:

def format(number, width):
    numstr = str(number)
    result = ''
    numstrlen = len(numstr)
    for i in range(width - numstrlen):
        result += '0'
    result += numstr
    return result

我会简单地做减法,但你说它需要成为一个循环。

如果你不能使用len:

def format(number, width):
    numstr = str(number)
    result = ''
    numstrlen = 0
    for c in numstr:
        numstrlen += 1
    for i in range(width - numstrlen):
        result += '0'
    result += numstr
    return result

答案 1 :(得分:0)

我不太明白你的意思是“只能使用循环和功能”。由于你可以使用函数,你几乎可以在Python中使用任何东西。

最简单的解决方案:

def format(n,w):
    s = str(n)
    return ('0' * w + s)[-max(w,len(s)):]

>>> format(34,4)
'0034'

或者您可以使用循环:

def format(n,w):
    s = str(n)
    result = ''
    for i in range(w - len(s)):
        result += '0'
    return result + s

>>> format(34,1)
'34'
>>> format(34,4)
'0034'