শীর্ষস্থানীয় শূন্যগুলির সাথে সংখ্যা প্রদর্শন করুন


910

প্রদত্ত:

a = 1
b = 10
c = 100

আমি কীভাবে দুটি সংখ্যার কম সংখ্যার সাথে সমস্ত সংখ্যার জন্য একটি শূন্যস্থান প্রদর্শন করব?

এই আউটপুটটি আমি প্রত্যাশা করছি:

01
10
100

উত্তর:


1057

পাইথন 2 (এবং পাইথন 3) এ আপনি করতে পারেন:

print "%02d" % (1,)

মূলত % এর মত printfবা sprintf( ডক্স দেখুন )।


পাইথন ৩. এর জন্যও একই আচরণটি এর সাথে অর্জন করা যেতে পারে format:

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

পাইথন ৩.6+ এর জন্য এফ-স্ট্রিংয়ের মাধ্যমে একই আচরণ অর্জন করা যেতে পারে :

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

8
উদাহরণ: 5% অঙ্কের ডাক কোডের জন্য "% 05d"% ফলাফল ['পোস্টালকোড'] মুদ্রণ করুন।
নিক উডহামস

2
x = "%02d.txt" % iTypeError উত্থাপন করে ('str' এবং 'int' অবজেক্টগুলিকে একত্রিত করতে পারে না), কিন্তু x = "%02d.txt" % (i,)হয় না। মজাদার. আমি আশ্চর্য হয়েছি যে কোথায় এটি নথিভুক্ত হয়েছে
থেটায়

@theta ২.7..6 এ, আমি একটি ত্রুটি পাই না। পাইথনের নির্দিষ্ট সংস্করণে এটি কোনও বাগ ছিল যা তারা তখন থেকেই ঠিক করে ফেলেছে?
জ্যাক এম।

1
হতে পারে. ২.7. In এ বিন্যাসের মান টিপল না হলে কোনও ব্যতিক্রম নেই (কমপক্ষে এই উদাহরণের জন্য)। আমার মন্তব্যের তারিখের দিকে তাকিয়ে আমি অনুমান করি যে আমি তখন ২. back.৩ পিছিয়ে ছুটছিলাম, এবং তখন আমি জানতাম না যে %স্ট্রিং ফরমেটার ব্যবহারের সময় একটি টুপলে সিঙ্গল ভেরিয়েবল স্থাপন করা আপনাকে নিরাপদ দিকে নিয়ে যায় ।
থেটা

1
বিস্তারিতভাবে বলার জন্য, ডকসগুলি এখানে এটি ব্যাখ্যা করে: "যখন কোনও স্পষ্ট সারিবদ্ধতা দেওয়া না হয়, তখন শূন্য ('0') অক্ষর দ্বারা প্রস্থ ক্ষেত্রের পূর্বে সাইন-সচেতন শূন্য-প্যাডিংকে সংখ্যাযুক্ত প্রকারের জন্য সক্ষম করে দেয় 'এটি একটি পূর্ণ চরিত্রের সমতুল্য' 0 'এর প্রান্তিককরণের ধরণের' = 'সহ। "
জেএইচএস

940

আপনি ব্যবহার করতে পারেন str.zfill:

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

কপি করে প্রিন্ট:

01
10
100

71
আমি এই সমাধানটি পছন্দ করি, কারণ এটি কেবলমাত্র সংখ্যাটি আউটপুট দেওয়ার সময়ই সহায়তা করে না, তবে যখন আপনাকে এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করা দরকার ... উদাহরণস্বরূপ x = str (ডেটটাইম.ডেট.টোডে ()। মাস) .জফিল (2) ফিরে আসবে x ফেবি মাসের জন্য '02' হিসাবে
এরোসান

2
এটি সঠিক উত্তর হওয়া উচিত, যেহেতু এর "{1:02d}"জায়গায় ভেরিয়েবল থাকতে পারে না 2(যেমন আপনি যদি একটি গতিশীল ফাংশন তৈরি করছেন)।
জোশুয়া ভার্গেস

363

পাইথন 2.6+ এবং 3.0+ এ আপনি format()স্ট্রিং পদ্ধতিটি ব্যবহার করবেন :

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

বা বিল্ট-ইন ব্যবহার করে (একক সংখ্যার জন্য):

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

নতুন ফর্ম্যাটিং ফাংশনগুলির জন্য পিইপি -3101 ডকুমেন্টেশন দেখুন ।


29
পাইথন ২.7.৫ এও কাজ করে। আপনি যদি নামযুক্ত যুক্তি ব্যবহার করতে না চান তবে আপনি '{: 02d}' বিন্যাস (1) ব্যবহার করতে পারেন।
জেসন মার্টেনস

1
"{0: 04.0f}" ফ্লোটিং পয়েন্ট সহ, ২.7.২ এ সূক্ষ্মভাবে কাজ করে 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
পাইথন ৩ এর সাথে কেবল সামঞ্জস্যপূর্ণ ৩. পাইথন ২.7 ব্যবহার করা হলে করুনprint '{:02}'.format(1)
ব্লেয়ারজ 23


73

ইন পাইথন> = 3.6 , আপনি succinctly নতুন F-স্ট্রিং যে ব্যবহার করে চালু হয় সঙ্গে এই কাজ করতে পারেন:

f'{val:02}'

যা নামের সঙ্গে পরিবর্তনশীল ছাপে valএকটি সঙ্গে fillমান 0এবং widthএর2

আপনার নির্দিষ্ট উদাহরণের জন্য আপনি লুপে এটি দুর্দান্তভাবে করতে পারেন:

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

যা প্রিন্ট করে:

01 
10
100

এফ-স্ট্রিং সম্পর্কিত আরও তথ্যের জন্য, PEP 498 এ সেগুলি চালু করা হয়েছে তা একবার দেখুন।


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

ফলাফল স্বরূপ:

01
10
100

ডকুমেন্টেশনে % ব্যবহার করে স্ট্রিং ফর্ম্যাটিং সম্পর্কে আরও তথ্য পড়ুন ।


9
ডকুমেন্টেশন উদাহরণ sucks। তারা নেতৃস্থানীয় শূন্য নমুনার সাহায্যে ম্যাপিং ফেলে দেয়, সুতরাং এটি কীভাবে কাজ করে তা আপনি ইতিমধ্যে না জানলে কোনটি কোনটি তা জানা শক্ত। আসলে এখানে আমাকে এখানে এনেছে।
অনুদান

49

পাইথোনিক উপায় এটি করার:

str(number).rjust(string_width, fill_char)

এর দৈর্ঘ্য স্ট্রিং_উইথথের চেয়ে বেশি হলে মূল স্ট্রিংটি অপরিবর্তিত অবস্থায় ফিরে আসে। উদাহরণ:

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)))

মূলত জিলফিল আপনার যোগ করতে চায় এমন শীর্ষস্থানীয় শূন্যগুলির সংখ্যা নেয়, তাই সবচেয়ে বড় সংখ্যাটি নেওয়া, স্ট্রিংয়ে পরিণত করা এবং দৈর্ঘ্য পাওয়া খুব সহজ:

পাইথন 3.6.5 (ডিফল্ট, মে 11 2018, 04:00:52) 
[জিসিসি 8.1.0] লিনাক্সে
আরও তথ্যের জন্য "সহায়তা", "কপিরাইট", "ক্রেডিট" বা "লাইসেন্স" টাইপ করুন।
>>> মোট = 100
>>> মুদ্রণ (টিআর (1) .জফিল (লেন (আরআর (মোট)))
২001
>>> মোট = 1000
>>> মুদ্রণ (টিআর (1) .জফিল (লেন (আরআর (মোট)))
0001
>>> মোট = 10000
>>> মুদ্রণ (টিআর (1) .জফিল (লেন (আরআর (মোট)))
00001
>>> 


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

1

আপনি এফ স্ট্রিং দিয়ে এটি করতে পারেন ।

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:]

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.