ප්‍රමුඛ ශුන්‍යයන් සමඟ අංකය පෙන්වන්න


949

ලබා දී ඇත්තේ:

a = 1
b = 10
c = 100

ඉලක්කම් දෙකකට වඩා අඩු සියලුම සංඛ්‍යා සඳහා ප්‍රමුඛ ශුන්‍යයක් පෙන්වන්නේ කෙසේද?

මම බලාපොරොත්තු වන ප්‍රතිදානය මෙයයි:

01
10
100

Answers:


1138

පයිතන් 2 (සහ පයිතන් 3) හි ඔබට කළ හැක්කේ:

print "%02d" % (1,)

මූලික වශයෙන් % සමාන printfහෝ sprintf( ලියකියවිලි බලන්න ).


පයිතන් 3. + සඳහා, එකම හැසිරීම ද සමඟින් සාක්ෂාත් කරගත හැකිය format:

print("{:02d}".format(1))

පයිතන් 3.6+ සඳහා එකම හැසිරීම f-string වලින් ලබා ගත හැකිය :

print(f"{1:02d}")

9
උදාහරණය: ඉලක්කම් 5 ක තැපැල් කේතයක් සඳහා "% 05d"% ප්‍රති result ලය ['postalCode'] මුද්‍රණය කරන්න.
නික් වුඩ්හැම්ස්

4
x = "%02d.txt" % iTypeError මතු කරයි ('str' සහ 'int' වස්තු සමපාත කළ නොහැක), නමුත් x = "%02d.txt" % (i,)එසේ නොවේ. සිත්ගන්නා සුළුය. එය ලේඛනගත කර ඇත්තේ කොහේදැයි මට සිතේ
තීටා

1
2.theta 2.7.6 දී, මට දෝෂයක් නොමැත. සමහර විට මෙය පයිතන්ගේ නිශ්චිත අනුවාදයක ඇති දෝෂයක් නිසා ඔවුන් විසින් නිවැරදි කර තිබේද?
ජැක් එම්.

3
සමහරවිට. 2.7.6 හි ආකෘති අගය ටුපල් නොවේ නම් ව්‍යතිරේකයක් නොමැත (අවම වශයෙන් මෙම උදාහරණය සඳහා). මගේ අදහස් දැක්වීමේ දිනය දෙස බලන විට මම අනුමාන කළේ එවකට මම 2.7.3 ක් ධාවනය කර ඇති අතර, එකල විචල්‍යයක් ටුපල් එකක තැබීමෙන් ඔබට %නූල් ආකෘති භාවිතා කරන විට ආරක්ෂිත පැත්තකට යා හැකි බව මම දැන නොසිටියෙමි.
තීටා

3
විස්තාරනය කිරීම සඳහා, ලියකියවිලි මෙහි මෙසේ පැහැදිලි කරයි: "ශුන්‍ය ('0') අක්ෂරයකින් පළල ක්ෂේත්‍රයට පෙර සංඛ්‍යාත්මක වර්ග සඳහා සං -ා-දැනුවත් ශුන්‍ය-පැඩින් කිරීම සක්‍රීය කරයි. මෙය පිරවුම් චරිතයකට සමාන වේ. 0 'පෙළගැස්වීමේ වර්ගයක් සහිත' = '. "
ජේඑච්එස්

974

ඔබට භාවිතා කළ හැකිය str.zfill:

print(str(1).zfill(2))
print(str(10).zfill(2))
print(str(100).zfill(2))

මුද්‍රණ:

01
10
100

72
මම මෙම විසඳුමට කැමතියි, එය සංඛ්‍යා ප්‍රතිදානය කිරීමේදී පමණක් නොව, ඔබට එය විචල්‍යයකට පැවරීමට අවශ්‍ය වූ විටද ... උදා: x = str (datetime.date.today (). මාසය) .zfill (2) නැවත පැමිණේ x feb මාසය සඳහා '02' ලෙස.
ඊරෝසාන්

3
"{1:02d}"විචල්‍යයන් වෙනුවට විචල්‍යයන් තිබිය නොහැකි බැවින් මෙය නිවැරදි පිළිතුර විය යුතුය 2(ඔබ ගතික ශ්‍රිතයක් නිර්මාණය කරන්නේ නම් වැනි).
ජෝෂුවා වර්ගිස්

Os ජොෂුවා වර්ගීස් එයට විචල්‍යයන් තිබිය හැකිය : "{0:0{1}}". දෙවන තර්කය ලෙස ඔබට අවශ්‍ය ඕනෑම ශුන්‍ය සංඛ්‍යාවක් පසු කරන්න.
ජිම්

Im ජිම් වඩා සංකීර්ණ නොවේ :)
ජෝෂුවා වර්ගිස්

366

පයිතන් 2.6+ සහ 3.0+ වලදී, ඔබ format()නූල් ක්‍රමය භාවිතා කරයි :

for i in (1, 10, 100):
    print('{num:02d}'.format(num=i))

හෝ සාදන ලද (තනි අංකයක් සඳහා) භාවිතා කිරීම:

print(format(i, '02d'))

නව හැඩතල ගැන්වීමේ කාර්යයන් සඳහා PEP-3101 ප්‍රලේඛනය බලන්න .


29
පයිතන් 2.7.5 හි ද ක්‍රියා කරයි. ඔබට නම් කරන ලද තර්ක භාවිතා කිරීමට අවශ්‍ය නැතිනම් '{: 02d}' ආකෘතිය (1) භාවිතා කළ හැකිය.
ජේසන් මාටෙන්ස්

1
"{0: 04.0f}" නම් පාවෙන ලක්ෂ්‍යයක් සහිත 2.7.2 හි හොඳින් ක්‍රියා කරයි. . මම% හැඩතල දැනුවත් වෙමි නමුත් ලිවීමෙන් තොරව දැනට පවතින .format ප්රකාශය වෙනස් කිරීමට අවශ්ය මුළු දෙයක්. ස්තූතියි!
මයිකල් ස්ටිම්සන්

129
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))

මුද්‍රණ:

01
10
100

1
මේ ආකාරයෙන් ඔබට කිහිප වතාවක්ම තර්කය පුනරාවර්තනය කිරීමට ඉඩ ලබා දේ:One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
srodriguex

2
පයිතන් 3 සමඟ පමණක් අනුකූල වේ. පයිතන් 2.7 භාවිතා කරන්නේ නම්, කරන්නprint '{:02}'.format(1)
බ්ලෙයාර්ග් 23

89

හෝ මෙය:

print '{0:02d}'.format(1)


76

දී Python> = 3.6 , ඔබ භාවිතා කරමින් හඳුන්වා දෙන ලදී බව නව F-කොන්දේසියකින් සංක්ෂිප්තව දක්වන්නේ මෙය කළ හැකි:

f'{val:02}'

වන නම, විචල්ය මුද්රණය කරයි valසමඟ fillවටිනාකම 0සහ width2 .

ඔබේ නිශ්චිත උදාහරණය සඳහා ඔබට මෙය ලූපයකින් මනාව කළ හැකිය:

a, b, c = 1, 10, 100
for val in [a, b, c]:
    print(f'{val:02}')

මුද්‍රණය කරන:

01 
10
100

එෆ්-නූල් පිළිබඳ වැඩි විස්තර සඳහා, ඒවා හඳුන්වා දුන් PEP 498 දෙස බලන්න .


58
x = [1, 10, 100]
for i in x:
    print '%02d' % i

ප්‍රති results ල:

01
10
100

ප්‍රලේඛනයේ % භාවිතා කරමින් නූල් හැඩතල ගැන්වීම පිළිබඳ වැඩිදුර තොරතුරු කියවන්න .


9
ප්‍රලේඛන උදාහරණය උරා ගනී. ඔවුන් ප්‍රමුඛ ශුන්‍ය නියැදිය සමඟ සිතියම් ගත කරයි, එබැවින් එය ක්‍රියාත්මක වන්නේ කෙසේදැයි ඔබ දැනටමත් නොදන්නේ නම් එය කුමක්දැයි දැන ගැනීම දුෂ්කර ය. ඒක තමයි මාව මෙහාට ගෙනාවේ, ඇත්තටම.
ග්‍රාන්ට්

50

මෙය කිරීමට පයිතොනික් ක්‍රමය:

str(number).rjust(string_width, fill_char)

මේ ආකාරයට, මුල් නූල් වල දිග string_width ට වඩා වැඩි නම් නොවෙනස්ව ආපසු ලබා දෙනු ලැබේ. උදාහරණයක්:

a = [1, 10, 100]
for num in a:
    print str(num).rjust(2, '0')

ප්රතිපල:

01
10
100

33

නැත්නම් වෙනත් විසඳුමක්.

"{:0>2}".format(number)

3
මෙය පයිතන් ක්‍රමය වනු ඇත, මම පැහැදිලි කිරීම සඳහා පරාමිතිය ඇතුළත් කළද - "{0:0>2}".format(number)යමෙකුට nLeadingZeros අවශ්‍ය නම් ඔවුන්ටද කළ හැකි බව ඔවුන් සටහන් කළ යුතුය:"{0:0>{1}}".format(number, nLeadingZeros + 1)
ජොනතන් ඇලන්


4

මම එය කරන්නේ මෙයයි:

str(1).zfill(len(str(total)))

මූලික වශයෙන් zfill ඔබට එකතු කිරීමට අවශ්‍ය ප්‍රමුඛ ශුන්‍ය ගණන ගනී, එබැවින් විශාලතම අංකය ගැනීම පහසුය, එය නූලක් බවට පත් කර දිග ලබා ගන්න, මේ ආකාරයට:

පයිතන් 3.6.5 (පෙරනිමිය, 2018 මැයි 11, 04:00:52) 
[GCC 8.1.0] ලිනක්ස් මත
වැඩි විස්තර සඳහා "උදව්", "ප්‍රකාශන අයිතිය", "බැර" හෝ "බලපත්‍රය" ටයිප් කරන්න.
>>> එකතුව = 100
>>> මුද්‍රණය කරන්න (str (1) .zfill (len (str (total)))
001
>>> එකතුව = 1000
>>> මුද්‍රණය කරන්න (str (1) .zfill (len (str (total)))
0001
>>> එකතුව = 10000
>>> මුද්‍රණය කරන්න (str (1) .zfill (len (str (total)))
00001
>>> 


1
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted

1

ඔබට මෙය f නූල් වලින් කළ හැකිය.

import numpy as np

print(f'{np.random.choice([1, 124, 13566]):0>8}')

මෙය නියත දිග 8 ක් මුද්‍රණය කරන අතර ඉතිරි කොටස ඊයම් සමඟ පෑඩ් කරයි 0.

00000001
00000124
00013566

0

භාවිත:

'00'[len(str(i)):] + str(i)

හෝ mathමොඩියුලය සමඟ :

import math
'00'[math.ceil(math.log(i, 10)):] + str(i)


-2

ඉලක්කම් එකක් හෝ දෙකක් ඇති සංඛ්‍යා සමඟ කටයුතු කරන්නේ නම්:

'0'+str(number)[-2:] හෝ '0{0}'.format(number)[-2:]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.