原始方案
# 给定一个不超过5的正整数(不转换为字符串),依次打印万位、千位、百位、十位、各位数字。
y = 54321
x = 10000
for i in range(5):
m = y//x #*位是m
print("高位是{:_<10}".format(m), end="")
y = y%x #余数是y
print(f"余数是{y}")
x=x/10
>>>高位是5_________余数是4321
>>>高位是4.0_______余数是321.0
>>>高位是3.0_______余数是21.0
>>>高位是2.0_______余数是1.0
>>>高位是1.0_______余数是0.0
优化方案:减少range从5到4
y = 54321
x = 10000
for i in range(4):
m = y//x #*位是m
print("高位是{:_<10}".format(m), end="")
y = y%x #余数是y
print(f"余数是{y}")
x=x/10
print("高位是{}".format(y)) #把print提出来打印,就可以减少range从5到4,让我们做一个斤斤计较的程序员
>>>高位是5_________余数是4321
>>>高位是4.0_______余数是321.0
>>>高位是3.0_______余数是21.0
>>>高位是2.0_______余数是1.0
>>>高位是1.0
第二种写法
Python数位分离的效率优化:一个else也要计较
# 常规语句
y =54321
for i in range(4, 0 ,-1):
w = 10 ** i
x = y // w
y = y %w
print(x,y)
else:
print(y)
>>>5 4321
>>>4 321
>>>3 21
>>>2 1
>>>1
else省略:
# 通过提出else里面的语句,可以省略一次else的判断子句
y =54321
for i in range(4, 0 ,-1):
w = 10 ** i
x = y // w
y = y %w
print(x,y)
print(y) #提出else里面的语句
>>>5 4321
>>>4 321
>>>3 21
>>>2 1
>>>1