পাইথন স্ট্রিং ফর্ম্যাটিংয়ে% s এবং% d এর মধ্যে পার্থক্য কী?


138

আমি কী বুঝতে পারি না %sএবং %dকী করে এবং কীভাবে তারা কাজ করে।

উত্তর:


185

তারা স্ট্র্যাটিং বিন্যাসের জন্য ব্যবহৃত হয়। একটি সংখ্যার জন্য স্থানধারক হিসাবে কাজ করার %sসময় স্ট্রিংয়ের জন্য একটি স্থানধারককে %dকাজ করে। তাদের সম্পর্কিত মানগুলি %অপারেটরটি ব্যবহার করে একটি টুপলের মাধ্যমে প্রেরণ করা হয় ।

name = 'marcog'
number = 42
print '%s %d' % (name, number)

মুদ্রণ করবে marcog 42। মনে রাখবেন যে নামটি একটি স্ট্রিং (% s) এবং সংখ্যাটি পূর্ণসংখ্যা (দশমিকের জন্য% d)।

বিশদের জন্য https://docs.python.org/3/library/stdtyype.html#printf-style-string- ফর্ম্যাটিং দেখুন ।

পাইথন 3 এ উদাহরণটি হ'ল:

print('%s %d' % (name, number))

2
গুগল ক্রোমে: সেটিংস >> অনুসন্ধান >> অনুসন্ধান ইঞ্জিনগুলি পরিচালনা করুন ... লক্ষ্য করুন কীভাবে %sঅনুসন্ধান ইঞ্জিন কনফিগারেশনের সাহায্যে ব্যবহৃত হয়। ক্রোম %sঠিকানা বারে প্রবেশ করা কীওয়ার্ডগুলি প্রতিস্থাপন করতে ব্যবহার করে। পাইথন %sএকইভাবে ব্যবহার করে । ইন অপারেটর সঞ্চিত টেক্সট স্ট্রিং দ্বারা প্রতিস্থাপন করা হবে পরিবর্তনশীল। বৃত্তাকার ধনুর্বন্ধনী পাইথন 3print('description: %s' % descrip)%sdescrip
— তে

আপনি এই% s,% d, ইত্যাদি কি বলবেন?
— চেইন

1
@ চেইন তাদের স্থানধারক বলা হয়, তারা প্রতিস্থাপনযোগ্য পরিবর্তনশীল
— লিও

@ লিও ধন্যবাদ!
— চেইন

37

থেকে পাইথন 3 ডক

%d দশমিক পূর্ণসংখ্যার জন্য

%s জেনেরিক স্ট্রিং বা অবজেক্টের জন্য এবং অবজেক্টের ক্ষেত্রে এটি স্ট্রিংয়ে রূপান্তরিত হবে

নিম্নলিখিত কোড বিবেচনা করুন

name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))

আউট পুট হবে

গিয়াকোমো 4.3 4 4.300000 4.3

আপনি দেখতে পাচ্ছেন %dযে পূর্ণসংখ্যায় ছাঁটাই হবে, %sবিন্যাস বজায় রাখবে, %fভাসমান হিসাবে মুদ্রণ করবে এবং %gজেনেরিক সংখ্যার জন্য ব্যবহৃত হবে

স্পষ্টত

print('%d' % (name))

একটি ব্যতিক্রম উত্পন্ন করবে; আপনি স্ট্রিংকে সংখ্যায় রূপান্তর করতে পারবেন না


এটি আরও উঁচুতে প্রত্যাশিত। এটি ব্যাখ্যা করে যে %sপরিবর্তে কোনও সংখ্যার জন্য ব্যবহার করা হলে কী হবে ।
— বিকাশ প্রসাদ

1
% D এবং% i এর মধ্যে পার্থক্য কী, যদি উভয়ই পূর্ণসংখ্যায় রূপান্তরিত হয়? % D কীভাবে% i এবং% f এর সাথে তুলনা করে?
— শ্রীনি

34

%s স্ট্রিং মানগুলির জন্য একটি স্থানধারক হিসাবে ব্যবহৃত হয় আপনি কোনও ফর্ম্যাট স্ট্রিংয়ে ইনজেক্ট করতে চান।

%d সংখ্যাসূচক বা দশমিক মানগুলির জন্য স্থানধারক হিসাবে ব্যবহৃত হয়।

উদাহরণস্বরূপ (অজগর 3 এর জন্য)

print ('%s is %d years old' % ('Joe', 42))

আউটপুট হবে

Joe is 42 years old

6
আসলেই কি সমস্যার ব্যাখ্যা দেয় না? আমি সমস্যা ব্যাখ্যা করছি না, আমি একটি সংক্ষিপ্ত উত্তর প্রদান করছি করার প্রশ্ন। এই প্রশ্নটিতে বিশেষত জিজ্ঞাসা করা হয়েছিল যে% s এবং% d এর জন্য ছিল।
— সোভিয়েট

2
আপনি% i এবং% d এর মধ্যে পার্থক্য জানেন? পাইথন% i সমর্থন করে?
— cryanbhu

11

এগুলি স্থানধারক:

উদাহরণ স্বরূপ: 'Hi %s I have %d donuts' %('Alice', 42)

কোডের এই লাইনটি% s এর সাথে অ্যালিস (স্ট্র) এবং% d এর সাথে 42 করবে।

আউটপুট: 'Hi Alice I have 42 donuts'

এটি বেশিরভাগ সময় "+" দিয়ে অর্জন করা যেতে পারে। আপনার প্রশ্নের আরও গভীর ধারণা অর্জনের জন্য আপনি {} /। Formt () টিও পরীক্ষা করতে চাইতে পারেন। এখানে একটি উদাহরণ রয়েছে: পাইথন স্ট্রিং ফর্ম্যাটিং:% বনাম। ফর্ম্যাট

এছাড়াও এখানে একটি গুগল পাইথন টিউটোরিয়াল ভিডিও @ ৪০ 'দেখুন, এর কিছু ব্যাখ্যা https://www.youtube.com/watch?v=tKTZoB2Vjuk রয়েছে


10

%dএবং %sSTRING "কমান্ড" বিন্যাস বিন্যাস স্ট্রিং ব্যবহার করা হয়। %dসংখ্যার জন্য, এবং %sস্ট্রিং জন্য।

উদাহরণস্বরূপ:

print("%s" % "hi")

এবং

print("%d" % 34.6)

একাধিক যুক্তি পাস করতে:

print("%s %s %s%d" % ("hi", "there", "user", 123456)) ফিরে আসবে hi there user123456


9

এগুলি সমস্ত তথ্যবহুল উত্তর, তবে এর মধ্যে %sএবং কী পার্থক্য রয়েছে তার মূলে কিছুই পাওয়া যায় না %d।

%sstr()আর্গুমেন্টটিতে ফাংশনটি কল করতে ফর্ম্যাটরটিকে বলে এবং যেহেতু আমরা সংজ্ঞা অনুসারে একটি স্ট্রিংকে জোর করে নিচ্ছি, %sমূলত কেবল সম্পাদন করা হচ্ছে str(arg)।

%dঅন্যদিকে, কল int()করার আগে যুক্তিটি আহ্বান করা হচ্ছে str(), যেমন str(int(arg))এটি intজোর করে পাশাপাশি strজবরদস্তি সৃষ্টি করে।

উদাহরণস্বরূপ, আমি একটি হেক্স মানকে দশমিক হিসাবে রূপান্তর করতে পারি,

>>> '%d' % 0x15
'21'

বা একটি ভাসা কাটা।

>>> '%d' % 34.5
'34'

তর্কটি সংখ্যা না হলে অপারেশন ব্যতিক্রম বাড়িয়ে তুলবে।

>>> '%d' % 'thirteen'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str

সুতরাং যদি উদ্দেশ্যটি কেবল কল করতে হয় str(arg)তবে %sতা যথেষ্ট তবে আপনার যদি অতিরিক্ত ফরম্যাটিং (যেমন ফ্ল্যাট দশমিক জায়গাগুলি ফর্ম্যাট করা) বা অন্যান্য জবরদস্তির প্রয়োজন হয় তবে অন্যান্য বিন্যাসের চিহ্নগুলি প্রয়োজন।

সঙ্গে f-stringস্বরলিপি, যখন আপনি ফরম্যাটার ছেড়ে, ডিফল্ট str।

>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'

একই সত্য string.format; ডিফল্ট হয় str।

>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'

8

%dএবং %sস্থানধারক, তারা একটি পরিবর্তনযোগ্য পরিবর্তনশীল হিসাবে কাজ করে। উদাহরণস্বরূপ, আপনি যদি 2 ভেরিয়েবল তৈরি করেন

variable_one = "Stackoverflow"
variable_two = 45

আপনি ভেরিয়েবলগুলির একটি টিপল ব্যবহার করে স্ট্রিংয়ে একটি বাক্যে সেই পরিবর্তনশীলগুলি নির্ধারণ করতে পারেন।

variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"

নোট করুন যে %sস্ট্রিংয়ের জন্য %dকাজ করে এবং সংখ্যাসূচক বা দশমিক ভেরিয়েবলের জন্য কাজ করে।

আপনি যদি variable_3এটি মুদ্রণ করেন তবে এটি দেখতে এই রকম হবে

print(variable_3 % (variable_one, variable_two))

আমি স্ট্যাকওভারফ্লোতে একটি উত্তর খুঁজছিলাম এবং আমার প্রশ্নের 45 টিরও বেশি উত্তর পেয়েছি।


5

তারা ফর্ম্যাট নির্দিষ্টকরণকারী। এগুলি ব্যবহৃত হয় যখন আপনি আপনার পাইথন এক্সপ্রেশনগুলির মানকে স্ট্রিংয়ে অন্তর্ভুক্ত করতে চান, একটি নির্দিষ্ট বিন্যাস প্রয়োগ করে।

তুলনামূলকভাবে বিশদ পরিচয়ের জন্য পাইথনে ডুব দেখুন ।



2

আপনি যদি% s বা% d এড়াতে চান তবে ..

name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)

আউটপুট:

my name is marcog and my name is 42

2
এই প্রশ্নের প্রশ্নের সাথে কী সম্পর্ক আছে? প্রশ্নকারী %sএবং এর ব্যবহার সম্পর্কে জিজ্ঞাসা করছিল %d।
— মার্ক ডিকিনসন

বিটিডাব্লু, আপনি যে কোডটি দেখান তা পাইথন ৩.৩.১-তে অবৈধ: printপাইথন 3-তে একটি ফাংশন, বিবৃতি নয়।
— মার্ক ডিকিনসন

আমি পোস্টটি সম্পাদনা করেছি ... দয়া করে এটি দেখুন। আসলে, আমি এটিকে বিকল্প হিসাবে পোস্ট করেছি..যদি কেউ% d বা% s ব্যবহার এড়াতে পারে। এবং ত্রুটি সনাক্তকরণের জন্য ধন্যবাদ, .. আমি কোডটি সম্পাদনা করেছি।
— সুজাতা

3
সম্পাদনা করার জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে, এটি এখনও প্রশ্নের উত্তর নয়।
— মার্ক ডিকিনসন

2

% s স্ট্রিং% d এর জন্য স্থান ধরে রাখতে ব্যবহৃত হয় সংখ্যার জন্য স্থান ধরে রাখতে

name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))

প্রোগ্রাম আউটপুট

এই ভিডিওটি সেই টিপটি সম্পর্কে গভীরভাবে যায় https://www.youtube.com/watch?v=4zN5YsuiqMA


স্ট্যাক ওভারফ্লোতে স্বাগতম! আপনার উত্তর অন্য 12 টির চেয়ে আলাদা কীভাবে?
— ভাসিল ভেলিচকভ

প্রায় format ফর্ম্যাটগুলি একই কাজ করে তবে আমি চেয়েছিলাম আরও একটি উদাহরণ দেওয়া যাতে বোঝা আরও বাড়ানো যায়
— নোয়েল মূসা মাওয়াদেন্দে

দারুণ! আপনি নিজের উত্তরটি উন্নত করতে পারেন কোনও প্রোগ্রাম হিসাবে আউটপুটটিকে একটি পাঠ্য হিসাবে নয় বরং কোনও চিত্র হিসাবে।
— ভাসিল ভেলিচকভ

আপনার উদ্বেগের জন্য ধন্যবাদ, আমি কিছু পরিবর্তন করব, আপনি স্বাগত
— নোয়েল মূসা মাওয়াদেন্দে

1

যার কথা বলতে ...
পাইথন 3.6 আসে f-stringsযা ফর্ম্যাটে জিনিসগুলিকে অনেক সহজ করে তোলে!
এখন যদি আপনার অজগর সংস্করণটি 6.6 এর বেশি হয় তবে আপনি এই উপলভ্য পদ্ধতিতে আপনার স্ট্রিংগুলিকে ফর্ম্যাট করতে পারেন:

name = "python"

print ("i code with %s" %name)          # with help of older method
print ("i code with {0}".format(name))  # with help of format
print (f"i code with {name}")           # with help of f-strings
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.