python中函数的另一种简化方法
我必须用python实现一个函数,它返回一个从0到9999的整数的4个字符的字符串。 字符串的值应以0开头 例如: 输入:python中函数的另一种简化方法,python,arrays,string,Python,Arrays,String,我必须用python实现一个函数,它返回一个从0到9999的整数的4个字符的字符串。 字符串的值应以0开头 例如: 输入: 3 22 123 1235 输出: 0003 0022 0123 0123 我实现的代码是: def stringtoZ(n): a = str(n) if(n < 10): string = "0" + "00" + a elif (n < 100): string = "0" + "0" + a
3
22
123
1235
输出:
0003
0022
0123
0123
我实现的代码是:
def stringtoZ(n):
a = str(n)
if(n < 10):
string = "0" + "00" + a
elif (n < 100):
string = "0" + "0" + a
elif (n < 1000):
string = "0" + a
else:
string = "0" + a[:3]
return string;
def stringtoZ(n):
a=str(n)
如果(n<10):
string=“0”+“00”+a
elif(n<100):
string=“0”+“0”+a
elif(n<1000):
string=“0”+a
其他:
string=“0”+a[:3]
返回字符串;
通常结果是正确的,但由于我是python的初学者,我想知道是否有其他更容易实现的方法?
非常感谢你 如果数字小于1000,可以使用4-len(a)
确定前导零的数量,否则'0'+a[:3]
对字符串的前三个数字进行切片。例如:
def stringtoZ(n):
a = str(n)
return '0' * (4-len(a)) + a if n < 1000 else '0' + a[:3]
print(stringtoZ(3), stringtoZ(123), stringtoZ(1234))
# 0003 0123 0123
def stringtoZ(n):
a=str(n)
如果n<1000,则返回“0”*(4-len(a))+a,否则返回“0”+a[:3]
打印(stringtoZ(3)、stringtoZ(123)、stringtoZ(1234))
# 0003 0123 0123
另一种方法是jarmod在评论中提到的:
def stringtoZ(n):
return str(n).zfill(4) if n < 1000 else str(n//10).zfill(4)
def stringtoZ(n):
如果n<1000,则返回str(n).zfill(4),否则返回str(n//10).zfill(4)
如果要检查有效输入,请尝试
def z(n):
if -1 < n < 1000 : return ('000'+str(n))[-4:]
if -1 < n < 10000 : return '0'+str(n//10)
raise ValueError('n = %d is out of range (0 ≤ n < 10000).'%n)
最后是一个如何在代码中管理异常的示例:
In [35]: for n in (-1, 0, 1, 999, 9999, 10000):
...: try:
...: print('%8d ——→'%n, z(n))
...: except ValueError as e:
...: print(e)
n = -1 is out of range (0 ≤ n < 10000).
0 ——→ 0000
1 ——→ 0001
999 ——→ 0999
9999 ——→ 0999
n = 10000 is out of range (0 ≤ n < 10000).
In [36]:
In[35]:对于n In(-1,0,1,999,9999,10000):
…:试试看:
…:打印(“%8d”)--→'%n、 z(n))
…:除ValueError为e外:
…:打印(e)
n=-1超出范围(0≤ n<10000)。
0 ——→ 0000
1 ——→ 0001
999 ——→ 0999
9999 ——→ 0999
n=10000超出范围(0≤ n<10000)。
在[36]中:
使用str(n).zfill(4)。请参阅@jarmodzfill()
如果数字必须以0开头(如果需要,可以截断)则无法使用@Mohd我不知道你的意思。你能给我一个0到9999之间的整数的例子吗?@jarmod OP的第四个例子:1235
->0123
@Mohd好的,谢谢,我没有读最后一个例子。多么奇怪的要求。好的,类似于:str(n).zfill(4)if n<1000 else str(n//10).zfill(4)
In [35]: for n in (-1, 0, 1, 999, 9999, 10000):
...: try:
...: print('%8d ——→'%n, z(n))
...: except ValueError as e:
...: print(e)
n = -1 is out of range (0 ≤ n < 10000).
0 ——→ 0000
1 ——→ 0001
999 ——→ 0999
9999 ——→ 0999
n = 10000 is out of range (0 ≤ n < 10000).
In [36]: