2009-05-15 14 views
153

मैं 100 से 0 तक लूप करने की कोशिश कर रहा हूं। मैं इसे पायथन में कैसे कर सकता हूं?पाइथन में सूचकांक का उपयोग कर पीछे लूप?

for i in range (100,0) काम नहीं करता है।

+2

बीटीडब्ल्यू, आप शायद 99 से 0 तक लूप करना चाहते हैं, और शायद ही कभी 100 से 0 तक। यह उत्तर को प्रभावित करता है। –

उत्तर

236

range(100,-1,-1) आज़माएं, तीसरा तर्क उपयोग करने के लिए वृद्धि (दस्तावेज here) है।

+4

यदि आपको संख्या सूची की आवश्यकता नहीं है तो आप श्रेणी के बजाय xrange का भी उपयोग कर सकते हैं, लेकिन यह सही उत्तर है। –

+2

इसके अलावा मुझे संग्रह से वस्तुओं को हटाने के लिए इसका उपयोग करने की ज़रूरत है, इसलिए यही इंडेक्स चाहता था। –

+2

दूसरा तर्क क्या है? – deltanine

24
for i in range(100, -1, -1) 

और कुछ थोड़ा लंबा (और धीमी) समाधान:

for i in reversed(range(101)) 

for i in range(101)[::-1] 
141

मेरी राय में, यह सबसे पढ़ी जा सकती है:

for i in reversed(xrange(101)): 
    print i, 
+9

यह स्वीकृत उत्तर से बेहतर है क्योंकि यह वास्तव में स्मृति में सभी संख्याओं को आवंटित नहीं करता है (पायथन 3 में स्वीकार्य उत्तर या तो नहीं होगा), साथ ही यह और भी स्पष्ट हो रहा है कि क्या हो रहा है। 2.6 से पहले – Blixt

+5

अजगर() पायथन 2.6 चूंकि यह __reversed कॉल __ (।) सभी नंबरों को आवंटित है, क्योंकि उलट कोई रास्ता नहीं पीछे की ओर जाने के लिए xrange बताने के लिए है ... –

+0

@Triptych धन्यवाद इस समाधान – zulucoda

14
आम तौर पर

अजगर में, आप नकारात्मक सूचकांक का उपयोग कर सकते पीठ से शुरू करने के लिए:

numbers = [10, 20, 30, 40, 50] 
for i in xrange(len(numbers)): 
    print numbers[-i - 1] 

परिणाम:

50 
40 
30 
20 
10 
4

एक अन्य समाधान:

z = 10 
for x in range (z): 
    y = z-x 
    print y 

परिणाम:

10 
9 
8 
7 
6 
5 
4 
3 
2 
1 

युक्ति: आप इस विधि का उपयोग कर रहे हैं एक सूची में सूचकांक वापस गिनती करने के लिए, आप चाहते हैं -1 'वाई' मान से, क्योंकि आपकी सूची सूचकांक 0 से शुरू हो जाएंगे।

0

मैं codeacademy अभ्यास में से एक में यह करने की कोशिश की (और न ही उलट का उपयोग किए बिना एक स्ट्रिंग में वर्ण पीछे :: -1)

def reverse(text): 
    chars= [] 
    l = len(text) 
    last = l-1 
    for i in range (l): 
     chars.append(text[last]) 
     last-=1 

    result= "" 
    for c in chars: 
     result += c 
    return result 
print reverse('hola') 
2

लघु और मिठाई। CodeAcademy कोर्स करते समय यह मेरा समाधान था। संशोधित क्रम में एक स्ट्रिंग मुद्रित करता है।

def reverse(text): 
    string = "" 
    for i in range(len(text)-1,-1,-1): 
     string += text[i] 
    return string  
+3

या 'टेक्स्ट [:: - 1] ' – PascalVKooten

-1
a = 10 
for i in sorted(range(a), reverse=True): 
    print i 
+0

स्टैक ओवरफ़्लो में आपका स्वागत है! कृपया अपना कोड संपादित करने के बारे में और स्पष्टीकरण जोड़ने के लिए अपनी पोस्ट को संपादित करने पर विचार करें और यह समस्या का समाधान क्यों करेगा। एक उत्तर जिसमें ज्यादातर कोड शामिल होते हैं (भले ही यह काम कर रहा हो) आमतौर पर ओपी को उनकी समस्या को समझने में मदद नहीं करेगा। – SuperBiasedMan

+0

आपको एहसास है कि 'सॉर्टेड' का उपयोग करके पूरी सूची को स्मृति में अनिवार्य रूप से स्टोर किया जाएगा, है ना? यह अपर्याप्त है और बड़े 'ए' के लिए व्यवहार्य नहीं है। –

1

क्यों अपने कोड काम नहीं किया

आप कोड for i in range (100, 0)छोड़कर

तीसरे पैरामीटर (step) डिफ़ॉल्ट +1 द्वारा होता है, ठीक है। तो आपको पीछे की ओर जाने के लिए श्रेणी() -1 के रूप में 3 पैरामीटर निर्दिष्ट करना होगा।

for i in range(100, -1, -1): 
    print(i) 

नोट: यह उत्पादन में 100 & 0 भी शामिल है।

कई तरीके हैं।

बेहतर रास्ता

pythonic तरीका के लिए, PEP 0322 की जाँच करें।

यह 100 से 0 तक प्रिंट करने के लिए पायथन 3 पायथनिक उदाहरण है (100 & 0 सहित)।

for i in reversed(range(101)): 
    print(i) 
1

तुम हमेशा अपने मामले 100 - i जहां i in range(0, 101) में रेंज बढ़ाने कर सकते हैं और घटाना एक चर से।

for i in range(0, 101): 
    print 100 - i 
1

सरल उत्तर आपकी समस्या का समाधान करने के लिए इस तरह हो सकता है:

for i in range(100): 
    i = 100 - i 
    print i 
-1

सबसे अच्छा तरीका रेंज समारोह

केस 1. जब हम जानते हैं कि हम यात्रा की निश्चित संख्या में उपयोग करने के लिए है हम रेंज फ़ंक्शन का उपयोग कर सकते हैं जैसे

रेंज() का उपयोग करने से पहले मुझे श्रेणी()

पर संक्षिप्त विवरण दें

यह तीन पैरामीटर 1 यह एक प्रत्येक यात्रा

for step in range(5,-1,-1): 
    print(step) 

केस 2 के बीच 3 अंतर को छोड़कर संख्या 2 पिछले संख्या शुरू कर रहा है लेता है हम सूची है और हम उलटे क्रम में सूची पुनरावृति करना चाहते हैं जब

words = ['cat','xat','hat','mat'] 
for word in range(len(words)-1,-1,-1): 
    print(words[word]) 
संबंधित मुद्दे