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

Python 返回前缀为0s的数字的字符串,python,function,loops,Python,Function,Loops,我不明白这个问题,感到困惑。有人能给我看看吗?这是python书籍中的一个练习。只能使用循环和函数。并根据问题,要求用户输入数字和宽度 def format(number, width): 函数返回前缀为0s的数字的字符串。大小 字符串的长度是宽度。例如,格式(34,4)返回“0034” 和格式(34,5)返回“00034”。如果数字大于 宽度,函数返回数字的字符串表示形式。 例如,格式(34,1)返回“34” 尝试: 我会简单地做减法,但你说它需要一个循环 如果您不能使用len: def f

我不明白这个问题,感到困惑。有人能给我看看吗?这是python书籍中的一个练习。只能使用循环和函数。并根据问题,要求用户输入数字和宽度

def format(number, width):
函数返回前缀为0s的数字的字符串。大小 字符串的长度是宽度。例如,格式(34,4)返回“0034” 和格式(34,5)返回“00034”。如果数字大于 宽度,函数返回数字的字符串表示形式。 例如,格式(34,1)返回“34”

尝试:

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

如果您不能使用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

我不太明白你所说的“只能使用循环和函数”是什么意思。因为您可以使用函数,所以几乎可以使用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'

你不明白什么?你对什么部分感到困惑?请注意,数字的宽度是它拥有的整数数。所以“1234”的宽度是4。“890”的宽度是3。“3”的宽度为1。等等如果传入的宽度大于数字的宽度,则该函数基本上会填充数字的前面。例如,format(34,4)返回“0034”,因为传入的宽度是4,“34”的宽度是2,4-2=2,所以我们在34前面加上2个零并返回。函数在不使用len的情况下还能运行吗?tq帮助:是否可以使用
len
?然后您可以使用循环自己计算长度:
对于s:length+=1中的i
@albusx:Oops。修正了错误。那么…你现在能投我一票吗?@albusx:我还以为这个答案有一票领先…哦,好吧!很抱歉谢谢你没有投反对票!
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'