2011-03-07 10 views
5
time=0 
gold=0 
level=1 
for time in range(100): 
    gold+=level 
    if gold>20*level: 
    level+=1 
    time+=10 

जब तक यह एक महत्वपूर्ण राशि तक पहुंचने पर जोड़ा जाता है, तो यह एक खदान के उन्नयन के लिए तो यह और अधिक सोना का उत्पादन 20 लेता है। मैं लूप में उन 20s (या 20 कदम) को छोड़ना चाहता हूं? यह C++ में काम करता है, मुझे यकीन नहीं है कि इसे पायथन में कैसे किया जाए।,, इस कार्यक्रम सोने के साथ मूल्यों के ऊपर से छलांग

उत्तर

17

range(100) में ऐसा न करें। for लूप उस तरह आगे जाने का कोई तरीका नहीं प्रदान करता है; time को लूप के शरीर में जो भी बदलते हैं, उसके बावजूद सूची में अगले मान पर सेट किया जाएगा। इसके बजाए while लूप का उपयोग करें, उदा।

time = 0 
while time < 100: 
    gold += level 
    if gold > 20 * level: 
     level +=1 
     time += 10 
    time += 1 
1

time लगातार प्रत्येक पाश यात्रा ओवरराइट जाएगा, ताकि time+=10 वांछित असर नहीं होगा। आप while का उपयोग करके लूप को सी सी स्टाइल लूप में परिवर्तित कर सकते हैं और time वैरिएबल का स्पष्ट उत्परिवर्तन कर सकते हैं या आप फैंसी और एक इटरेटर सेट अप कर सकते हैं जो आगे मनमानी मूल्यों को छोड़ने की अनुमति देता है।

1

अंतिम पंक्ति पर time पर आपका असाइनमेंट कोई प्रभाव नहीं पड़ता है। लूप के शीर्ष पर, time तुरंत range द्वारा प्रदान किए गए अगले मूल्य को सौंपा गया है। लेकिन यह एक लूप क्यों है, क्या आप सिर्फ गणना पूरी तरह से नहीं कर सकते?

संबंधित मुद्दे