নিউলাইন ছাড়াই মুদ্রণ ('এ' মুদ্রণ) একটি স্থান মুদ্রণ করে, কীভাবে সরানো যায়?


124

আমার এই কোডটি রয়েছে:

>>> for i in xrange(20):
...     print 'a',
... 
a a a a a a a a a a a a a a a a a a a a

আমি এই মত 'a'ছাড়া আউটপুট করতে চান ' ':

aaaaaaaaaaaaaaaaaaaa

এটা কি সম্ভব?


4
আমি অবাক হয়েছি যে এখনও কেউ উল্লেখ করেনি "".join("a" for i in xrange(20))। (এটি "a" * 20করানোর চেয়ে অনেক বেশি নমনীয় , যেমন আমি অনুমান করি এটি একটি সরল উদাহরণ)।
থমাস কে

উত্তর:


131

আপনার ফলাফল অর্জনের বিভিন্ন উপায় রয়েছে। আপনি যদি কেবল আপনার ক্ষেত্রে সমাধান চান তবে @ অ্যান্ট উল্লেখ হিসাবে স্ট্রিং গুণটি ব্যবহার করুন । এটি কেবল তখনই কাজ করবে যদি আপনার প্রতিটি বিবৃতি একই স্ট্রিং প্রিন্ট করে। নোট করুন যে এটি যে কোনও দৈর্ঘ্যের স্ট্রিং (যেমন কাজ করে) এর গুণনের জন্য কাজ করে।print'foo' * 20

>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa

আপনি যদি এটি সাধারণভাবে করতে চান তবে একটি স্ট্রিং তৈরি করুন এবং তারপরে এটি একবার মুদ্রণ করুন। এটি স্ট্রিংয়ের জন্য কিছুটা মেমোরি গ্রাস করবে, তবে কেবল এতে একক কল করবে print। নোট করুন যে স্ট্রিং কনটেনটেশন ব্যবহার +=করে স্ট্রিংয়ের আকার এখন রৈখিক হিসাবে আপনি সংক্ষিপ্ত করছেন তাই এটি দ্রুত হবে।

>>> for i in xrange(20):
...     s += 'a'
... 
>>> print s
aaaaaaaaaaaaaaaaaaaa

অথবা আপনি sys.stdout ব্যবহার করে এটি আরও সরাসরি করতে পারেন । () লিখুন , যা printচারপাশে মোড়ক। এটি কোনও বিন্যাস ছাড়াই আপনার দেওয়া কাঁচা স্ট্রিংটিই লিখবে। মনে রাখবেন যে 20 aসেকেন্ডের শেষেও কোনও নতুন লাইন মুদ্রিত হয়নি ।

>>> import sys
>>> for i in xrange(20):
...     sys.stdout.write('a')
... 
aaaaaaaaaaaaaaaaaaaa>>> 

পাইথন 3 printস্টেটমেন্টটি মুদ্রণ () ফাংশনে পরিবর্তিত করে , যা আপনাকে endপ্যারামিটার সেট করতে দেয় । আপনি এটিকে আমদানি করে> = 2.6 এ ব্যবহার করতে পারেন __future__। আমি যদিও এটি কোনও গুরুতর 2.x কোড এ এড়াতে চাই, কারণ যারা কখনও 3.x ব্যবহার করেন নি তাদের জন্য এটি কিছুটা বিভ্রান্তিকর হবে। তবে এটি আপনাকে 3..x আনার কিছু ধরণের ধরণের স্বাদ দেবে give

>>> from __future__ import print_function
>>> for i in xrange(20):
...     print('a', end='')
... 
aaaaaaaaaaaaaaaaaaaa>>> 

4
স্ট্রিংয়ের গুণনের উত্তর উপস্থিত থাকলে @ এএআই প্রশ্নটি পড়েছিলেন এবং ভেবেছিলেন যে আমি বেশ কয়েকটি বিকল্পের একটি সংক্ষিপ্ত বিবরণ দেব। আমি যখন আমার উত্তর একসাথে রাখছিলাম তখন অন্যরা এসেছিল। এটি শীঘ্রই গ্রহণ করা হয়েছিল, অন্যথায় আমি সম্ভবত এটি মুছে ফেলতাম।
মoinনুদিন

10
-1 সংক্ষিপ্তকরণ দ্বারা স্ট্রিং আপ না; এটি ও (এন ^ 2) এর পরিবর্তে ও (এন) "".join(...)পরিবর্তে ব্যবহার করুন।
ক্যাট্রিয়েল

10
আপনার উত্তর নিয়ে আমার কোনও সমস্যা নেই, এটি সমস্ত কিছুর সংক্ষিপ্তসার দেয় এবং এটি ভাল। তবে এটি করার দ্বারা, আপনি উত্তর দেওয়া অন্য লোকদের নিরুৎসাহিত করেন। অনেক ভাল উত্তর আছে এবং সব +1 প্রাপ্য। সকলেই সংক্ষিপ্তসার তৈরি করা শুরু করে দেখুন imagine
ব্যবহারকারী 225312

3
@ কেটরিএল্লেক্স: তাতে কিছু যায় আসে না? ওপি কি অপ্টিমাইজেশন বা জটিলতা চেয়েছে? এবং এটি 20 টি স্ট্রিংয়ের জন্য গুরুত্বপূর্ণ হবে? আসুন, আপনি অবশ্যই গুরুত্ব সহকারে রসিকতা করছেন।
ব্যবহারকারী225312

1
@ কেটরিল্লেক্স র্রং, +=পাইথনে ব্যবহার করে স্ট্রিং কনটেনটেশন একটি একক চরিত্রের সংমিশ্রনের জন্য একটি ধ্রুবক সময় কাজ।
মoinনুদিন

119

পিইপি 3105 থেকে : পাইথন ২.6 নথিতে নতুন কী রয়েছে তা একটি ফাংশন হিসাবে মুদ্রণ করুন :

>>> from __future__ import print_function
>>> print('a', end='')

স্পষ্টতই যে অজগর 3.0 বা উচ্চতর (বা from __future__ import print_functionশুরুতে 2.6+ ) দিয়ে কাজ করে। printবিবৃতি মুছে ফেলেছি এবং হয়ে ওঠে print()পাইথন 3.0 ডিফল্টরূপে ফাংশন।


41

আপনি printস্টেটমেন্টের মাঝে স্টাডআউটে একটি ফাঁকা স্ট্রিং মুদ্রণ করে স্থানটি দমন করতে পারেন ।

>>> import sys
>>> for i in range(20):
...   print 'a',
...   sys.stdout.write('')
... 
aaaaaaaaaaaaaaaaaaaa

যাইহোক, একটি ক্লিনার সমাধান হ'ল প্রথমে আপনি মুদ্রণ করতে চান এমন পুরো স্ট্রিংটি তৈরি করা এবং তারপরে এটি একটি একক printবিবৃতি দিয়ে আউটপুট দেয় ।


4
@ সোলসেকাহঃ হ্যাঁ, এক্ষেত্রে কেবল ব্যবহার sys.stdout.write()করা আরও সুবিধাজনক। তবে, আমি এটি দেখাতে চেয়েছিলাম যে স্টাডাউটকে একটি খালি স্ট্রিং লেখা ব্যবহার করে লিখিত উপাদানগুলির মধ্যে স্থানকে দমন করে print, যা একই পরিস্থিতিতে কার্যকর হতে পারে।
পের উইসল্যান্ডার


30

পাইথন 3.x:

for i in range(20):
    print('a', end='')

পাইথন 2.6 বা 2.7:

from __future__ import print_function
for i in xrange(20):
    print('a', end='')

10

আপনি যদি একবারে এটির একটি দেখাতে চান তবে আপনি এটি করতে পারেন:

import time
import sys
for i in range(20):
    sys.stdout.write('a')
    sys.stdout.flush()
    time.sleep(0.5)

sys.stdout.flush() প্রতিবার লুপটি চালানোর সময় অক্ষরটি লিখতে বাধ্য করা প্রয়োজন।


7

পার্শ্ব নোট হিসাবে:

মুদ্রণটি হ'ল (1) তবে একটি স্ট্রিং তৈরি করছে এবং তারপরে মুদ্রণটি হ'ল (এন), যেখানে স্ট্রিংয়ের মোট অক্ষরের সংখ্যা এন। সুতরাং হ্যাঁ, স্ট্রিংটি "ক্লিনার" তৈরি করার সময় এটি করা সবচেয়ে দক্ষ পদ্ধতি নয়।

আমি যেভাবে এটি করব তা নিম্নরূপ:

from sys import stdout
printf = stdout.write

এখন আপনার কাছে একটি "মুদ্রণ ফাংশন" রয়েছে যা প্রতিবার নতুন লাইনের চরিত্রটি না ফেরিয়ে আপনি যে কোনও স্ট্রিং প্রিন্ট করেন তা মুদ্রণ করে।

printf("Hello,")
printf("World!")

আউটপুটটি হবে: হ্যালো, ওয়ার্ল্ড!

তবে, আপনি যদি পূর্ণসংখ্যার, ভাসমান বা অন্যান্য স্ট্রিং মানগুলি মুদ্রণ করতে চান তবে আপনাকে সেগুলি স্ট্র () ফাংশন সহ একটি স্ট্রিংয়ে রূপান্তর করতে হবে।

printf(str(2) + " " + str(4))

আউটপুট হবে: 2 4


আপনি কি বলেন যে আমি একই সাথে একটি চরিত্রের আউটপুট হিসাবে অসীম পরিমাণ পাঠ্য আউটপুট করতে পারি?
ctrl-alt-delor 13

যখন আমি প্রিন্টফকে stdout.writ- এ পুনরায় সংজ্ঞায়িত করেছি, তখন আমার stdout.write মনে হয় স্ট্রিংটি চার্টাকটারের সংখ্যা মুদ্রণ করছে: "হ্যালো, 6" কি দেয়? কি হচ্ছে? এবং আমি কীভাবে এটি বন্ধ করব?
টম

1
এছাড়াও, আপনি ও (1) ও (এন) বলতে কী বোঝাতে চান? এটি কী বুঝায় তা আমি বুঝতে পারি না
টম

@ টম এটি অপারেশনের ব্যয়ের প্রতিচ্ছবি হিসাবে জটিলতার (বিগ ও স্বরলিপি) উল্লেখ করছেন । ও (1) ধ্রুবক সময় - আদর্শ - এবং ও (এন) হ'ল লিনিয়ার সময় - ঠিক আছে তবে এত সহজ কোনও কিছুর জন্য খুব ব্যয়বহুল। যদিও, ছোট জিনিসগুলির জন্য, আপনি এই বিষয়গুলি সম্পর্কে উদ্বিগ্ন হতে আপনার মস্তিষ্ক ব্যবহার করার সময়টি কেবল স্ট্রিং কনটেন্টেশন ব্যবহারের চেয়ে বেশি গণনার ক্ষেত্রে অপব্যয়যোগ্য।
বেনিয়ামিন আর



3

এটি সত্যিই সহজ

পাইথন 3+ সংস্করণের জন্য আপনাকে কেবল নিম্নলিখিত কোডগুলি লিখতে হবে

for i in range(20):
      print('a',end='')

লুপটি কেবল নিম্নলিখিত কোডগুলিতে রূপান্তর করুন, আপনাকে অন্যান্য জিনিস নিয়ে চিন্তা করতে হবে না


2

কি দারুন!!!

এটা বেশ দীর্ঘ সময় আগে

এখন, অজগর 3.x এ এটি খুব সহজ হবে

কোড:

for i in range(20):
      print('a',end='') # here end variable will clarify what you want in 
                        # end of the code

আউটপুট:

aaaaaaaaaaaaaaaaaaaa 

মুদ্রণ () ফাংশন সম্পর্কে আরও

print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)

এখানে :

value1,value2,value3

আপনি কমা ব্যবহার করে একাধিক মান মুদ্রণ করতে পারেন

sep = '-'

3 - মানগুলি '-' অক্ষর দ্বারা পৃথক করা হবে

আপনি সেপ = '@' বা সেপ = 'ভাল' এর মতো স্ট্রিংয়ের পরিবর্তে যে কোনও অক্ষর ব্যবহার করতে পারেন

end='\n'

ডিফল্ট মুদ্রণ ফাংশন দ্বারা আউটপুট শেষে '\ n' অক্ষর রাখুন

তবে আপনি শেষ বর্ণের মান পরিবর্তন করে যে কোনও অক্ষর বা স্ট্রিং ব্যবহার করতে পারেন

যেমন শেষ = '$' বা শেষ = '। বা শেষ = 'হ্যালো'

file=sys.stdout

এটি একটি ডিফল্ট মান, সিস্টেম স্ট্যান্ডার্ড আউটপুট

এই যুক্তি ব্যবহার করে আপনি একটি আউটপুট ফাইল স্ট্রিম তৈরি করতে পারেন

print("I am a Programmer", file=open("output.txt", "w"))

এই কোড দ্বারা আপনাকে নামের একটি ফাইল তৈরি করবে output.txt যেখানে আপনার আউটপুট আমি একজন প্রোগ্রামার সংরক্ষণ করা হবে

flush = False

ফ্লাশ = ব্যবহার করে এটি একটি ডিফল্ট মান True সত্য আপনি জোর করে স্ট্রিমটি ফ্লাশ করতে পারেন


2

এর মত সহজ

def printSleeping():
     sleep = "I'm sleeping"
     v = ""
     for i in sleep:
         v += i
         system('cls')
         print v
         time.sleep(0.02)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.