2015-07-19 10 views
6

यहाँ अब तक मेरी कोड है:पायथन में लूप से पिछली कॉमा को कैसे हटाया जाए?

def main(): 
    for var in range (1, 101): 
     num= IsPrime(var) 
     if num == 'true': 
      print(var, end=', ') 

IsPrime समारोह की गणना करता है या नहीं, एक समारोह प्रधानमंत्री है।

मुझे प्राइम संख्याओं को 1 से 100 स्वरूपित करने के लिए एक पंक्ति में कॉमा और रिक्त स्थान के साथ मुद्रित करने की आवश्यकता है। उदाहरण के लिए, उत्पादन दिखना चाहिए:

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 

मैं अपने कार्यक्रम चलाने की कोशिश की, लेकिन मैं हमेशा 97 के अंत में एक अनुगामी अल्पविराम मैं अल्पविराम दूर करने के लिए पता नहीं कैसे मिलता है, और क्योंकि यह है एक लूप, str.rstrip और [: -1] काम नहीं करते हैं।

मैं एक पाश उपयोग करने की आवश्यकता है और मैं अन्य रूढ़ अंक के लिए

print('2') 
print(', ', var, end='') 

उपयोग नहीं कर सकते।

मैं यह नहीं बता सकता कि इसे कोड करने का कोई आसान तरीका है या मुझे इस फ़ंक्शन से अवगत नहीं है जो इसे सही तरीके से कर सकता है।

+0

'IsPrime (वर)' एक बूलियन एक स्ट्रिंग नहीं लौटने की जानी चाहिए तो अगर 'IsPrime (वर)' होगा –

उत्तर

9

मेरी राय में मुहावरेदार अजगर कोड कुछ इस तरह दिखेगा:

 
print(', '.join([str(x) for x in xrange(1, 101) if IsPrime(x) == 'true'])) 

(चीजें बेहतर होगा कि IsPrime वास्तव में लौटे True या एक स्ट्रिंग के बजाय False)

यह बजाय कार्यात्मक है अनिवार्य कोड

यदि आप अनिवार्य कोड चाहते हैं, तो आपको लूप के पहले आइटम को छोड़कर प्रत्येक तत्व से पहले ', ' प्रिंट करना चाहिए। आप इसे एक बूलियन वैरिएबल के साथ कर सकते हैं जिसे आपने एक आइटम देखा है, जिसे आपने सही पर सेट किया है।

+3

जांचने के लिए पर्याप्त है यदि आपने अभिव्यक्ति के आस-पास '[...] 'हटा दिया है, तो और भी पाइथनिक होगा। तो यह केवल हल्के वजन वाले जनरेटर होगा जो 'join'-method ... – koffein

+0

@koffein पर बुरा नहीं है! मुझे खुद को 'फिल्टर' पसंद है, क्योंकि यह किसी भी कार्यात्मक प्रोग्रामिंग भाषा में बहुत अधिक काम करता है। – Borealid

+0

ठीक है, इस मामले में 'itertools' से' ifilter' पर विचार करने के लिए एक कार्य होगा, क्योंकि जहां तक ​​मुझे पता है कि 'फ़िल्टर' एक सूची लौटाता है, बस वहां '[...]' के साथ सूची समझ की तरह। मुझे व्यक्तिगत रूप से फ़िल्टर पसंद नहीं है, अगर मुझे 'लैम्ब्डा' इनलाइन बनाना है। मैं एक समारोह पहले से मौजूद है, ठीक है, लेकिन अन्यथा यह मुझे और भीड़ दिखता है तो सूची-समझ/जनरेटर ... – koffein

4

आप एक सूची में सभी नंबरों को रखा और फिर सभी मूल्यों शामिल हो सकते हैं:

def main(): 
    primes = [] 
    for var in range (1, 101): 
     if IsPrime(var) == 'true': 
      primes.append(var) 
     num = IsPrime(var) 
    print(', '.join(primes)) 
संबंधित मुद्दे