পাইথন 3 এ কীভাবে প্রিন্টফের মতো মুদ্রণ করবেন?


125

পাইথন 2 এ আমি ব্যবহার করেছি:

print "a=%d,b=%d" % (f(x,n),g(x,n))

আমি চেষ্টা করেছিলাম:

print("a=%d,b=%d") % (f(x,n),g(x,n))

11
%সর্বদা স্ট্রিং অপারেটর হয়ে থাকে, printবিবৃতি সম্পর্কিত নয় । আপনি উদাহরণস্বরূপ একটি স্ট্রিং তৈরি করতে পারেন s="a=%d,b=%d"%(f(x,n),g(x,n)), তারপরে সেই স্ট্রিংটি মুদ্রণ করতে পারেন print s
চিপনার

উত্তর:


207

পাইথন 2- printতে একটি কীওয়ার্ড ছিল যা একটি বিবৃতি দেয়:

print "Hi"

পাইথন 3-তে, printএকটি ফাংশন যা আহবান করা যেতে পারে:

print ("Hi")

উভয় সংস্করণে, %এমন একটি অপারেটর যা বাম-হাতের স্ট্রিং এবং একটি মান বা মানগুলির একটি টিপল বা dictডান হাতের ম্যাপিং অবজেক্টের (যেমন ) প্রয়োজন requires

সুতরাং, আপনার লাইনটি দেখতে এইরকম হওয়া উচিত:

print("a=%d,b=%d" % (f(x,n),g(x,n)))

এছাড়াও, পাইথন 3 এবং আরও নবীনদের জন্য সুপারিশটি হ'ল- {}স্টাইল বিন্যাসের পরিবর্তে স্টাইল বিন্যাস ব্যবহার করা %:

print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))

পাইথন ৩.6 আরও একটি স্ট্রিং-ফর্ম্যাটিং উপমা: এফ-স্ট্রিংস উপস্থাপন করেছে

print(f'a={f(x,n):d}, b={g(x,n):d}')

14
বা: print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n))) যেখানে এই উদাহরণটি দেখায় আপনি কীভাবে মুদ্রণ-শৈলীর সংশোধক ব্যবহার করতে পারেন এবং কীওয়ার্ডগুলি ব্যবহার করতে পারেন।
fbicknel

2
@ র্যাপ, এর কিছু বিশাল সুবিধা রয়েছে। এর মধ্যে সর্বনিম্ন নয় আপনি একই ফর্ম্যাটটি কেবল একাধিকবার বা অর্ডার ছাড়িয়ে উল্লেখ করতে পারেন: "{1}, {1}, {0}, এবং {1}"। ফর্ম্যাট ("ডিম", "স্প্যাম") = = "স্প্যাম, স্প্যাম, ডিম এবং স্প্যাম"
ডাঃ জোরাইল

53

সর্বাধিক প্রস্তাবিত উপায় হ'ল formatপদ্ধতি ব্যবহার করা । এটি সম্পর্কে এখানে আরও পড়ুন

a, b = 1, 2

print("a={0},b={1}".format(a, b))

28

ও'রিলির পাইথন কুকবুক থেকে সিম্পল প্রিন্টফ () ফাংশন ।

import sys
def printf(format, *args):
    sys.stdout.write(format % args)

উদাহরণ আউটপুট:

i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14

হি ... PRINTএবং FORMAT...? ফোরট্রান এর দিনগুলি 60+ বছর পরে ফিরে
এসেছে

1
ও'রিলির কুকবুকের লিঙ্কটি মারা গেছে।
ভাবলিপি

22

পাইথন ৩. in ইনলাইন ইন্টারপোলেশনের জন্য এফ-স্ট্রিং প্রবর্তন করেছে। এমনকি সবচেয়ে ভাল এটি ইন্টারপোলেশন সহ ফর্ম্যাট স্পেসিফায়ারদের অনুমতি দেওয়ার জন্য সিনট্যাক্সটি প্রসারিত করে। আমি এটি গুগল করার সময় কিছু কাজ করেছি (এবং এই পুরানো প্রশ্নটি এসেছে!):

print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')

পিইপি 498 এর বিশদ রয়েছে। এবং ... এটি অন্যান্য ল্যাংগুলিতে ফর্ম্যাট স্পেসিফায়ারগুলির সাথে আমার পোষা প্রাণীর প্রান্তকে সাজিয়েছে - স্পষ্টকারীদের জন্য অনুমতি দেয় যে তারা নিজেরাই প্রকাশ করতে পারে! হ্যাঁ! দেখুন: বিন্যাস specifiers


2
দ্রষ্টব্য: স্ট্রিংগুলিতে ভেরিয়েবলগুলি ইনজেক্ট করার এটিও সবচেয়ে কার্যকরী উপায়।
রোটারেটি



2

আপনার %প্রথম print(...)বন্ধনীর বাইরে থাকায় , আপনি নিজের কলটির ফলস্বরূপ আপনার ভেরিয়েবলগুলি sertোকানোর চেষ্টা করছেন printprint(...)ফিরে আসে None, সুতরাং এটি কাজ করবে না, এবং এর মধ্যে আপনার ছোট্ট বিষয়টি ইতিমধ্যে আপনার টেম্পলেটটি মুদ্রিত করে এই সময় এবং সময় ভ্রমণ দ্বারা আমরা বাস করছি মহাবিশ্বের আইন দ্বারা নিষিদ্ধ।

পুরো জিনিস আপনি চান সহ প্রিন্ট করতে, %হতে এবং তার প্রতীক, চাহিদা ভিতরে আপনার print(...)কল, যাতে স্ট্রিং আগেই ছাপা হয় নির্মিত হতে পারে।

print( "a=%d,b=%d" % (f(x,n), g(x,n)) )

এটি পরিষ্কার করার জন্য আমি কয়েকটি অতিরিক্ত স্পেস যুক্ত করেছি (যদিও এগুলি প্রয়োজনীয় নয় এবং সাধারণত ভাল স্টাইল হিসাবে বিবেচিত হয় না)।


2

অন্য শব্দগুলি মুদ্রণ অজগর থেকে অনুপস্থিত ... আমি অবাক! সেরা কোড হয়

def printf(format, *args):
    sys.stdout.write(format % args)

এই ফর্মের কারণে print n মুদ্রণ করতে দেয় না। অন্য সমস্ত না। এজন্য প্রিন্টটি খারাপ অপারেটর। এবং আপনার বিশেষ ফর্মে আরোগুলি লিখতে হবে। উপরের ক্রিয়ায় কোনও অসুবিধা নেই। এটি প্রিন্টফ ফাংশনের একটি আদর্শ সাধারণ রূপ


1
আপনি প্রিন্টে তুচ্ছভাবে avoid n এড়াতে পারেন। মানটি মুদ্রণের পরে কেবল "," যুক্ত করুন।
হিজাজমান

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