(पायथन) फॉर लूप स्टेटमेंट। विशिष्ट कार्य


कार्य
100 और 500 के बीच सभी पूर्णांकों का योग ज्ञात करें। 

आइए एक प्रोग्राम लिखते हैं जो इस समस्या को सूत्र का उपयोग किए बिना हल करता है। यदि हम चर s में जोड़ने का परिणाम लिखते हैं, उदाहरण के लिए, जैसा
\(s=100+101+102+103+...+500\),

हम रिकॉर्डिंग पर ही बहुत समय व्यतीत करेंगे, क्योंकि कंप्यूटर यह नहीं समझ पाएगा कि अंकगणितीय अभिव्यक्ति में इलिप्सिस का उपयोग कैसे किया जाए और हमें 100 से 500 तक की सभी संख्याएँ लिखनी होंगी। और ऐसे प्रोग्राम का मूल्य होगा नगण्य। खासकर अगर हम अपने नंबर बदलना चाहते हैं और एक अलग रेंज लेना चाहते हैं।

हमें क्या करना चाहिए?
यदि हम उपरोक्त प्रविष्टि पर ध्यान देते हैं, तो हम लगातार "+"" का उपयोग करते हैं।
आप धीरे-धीरे s वेरिएबल में नंबर जोड़ने की कोशिश कर सकते हैं। उदाहरण के लिए, इस संकेतन का उपयोग करना
s=s+i
हमने यहां क्या किया:
1) दाईं ओर हम अभिव्यक्ति s+i, रखते हैं, अर्थात, हम चर s  का मान लेते हैं और जोड़ते हैं वेरिएबल का मान इसके i;
2) बाईं ओर हम वेरिएबल s का नाम सेट करते हैं, अर्थात, दाईं ओर संपूर्ण गणना परिणाम उसी वेरिएबल s में संग्रहीत किया जाएगा, इसलिए हम चर s का मान बदल देंगे। 
यह केवल वांछित सीमा में चर i के मान को बदलने के लिए बनी हुई है। इसे for.
लूप से किया जा सकता है  
100 से 500 तक की संख्याएँ जो हमारी सीमा में हैं, उन्हें बारी-बारी से i चर में जाना चाहिए। 
उदाहरण
# महत्वपूर्ण! पहले आपको चर s को रीसेट करने की आवश्यकता है, # ताकि पहले चरण में 100 को शून्य में जोड़ दिया जाए, # और जो याद में है उसे नहीं! एस = 0 for i in range(100, 501): # लूप हैडर जहां i s += i # 1 के चरणों में इसका मान 100 से 500 में बदलता है, # लूप के शरीर में धीरे-धीरे वेरिएबल एस के लिए,   # परिवर्तनशील चर i का मान जोड़ें, # और परिणाम को वापस वेरिएबल s में सेव करें

यह समाधान क्रियाओं के योग की गणना करने के समान है:
 \(s = 0 + 100 = 100, \\ s = 100 + 101 = 201, \\ s = 201 + 102 = 303 \\ ... \)
 
 

दी गई संख्याओं में अधिकतम संख्या

सशर्त ऑपरेटर का अध्ययन करते समय, हमने कई दर्ज संख्याओं से अधिकतम संख्या ज्ञात करने के विषय को छुआ। समस्या में "अधिकतम चार संख्याएँ" हमने निम्नलिखित एल्गोरिद्म का उपयोग किया:
1. वेरिएबल M को चार वेरिएबल्स में से पहले को वैल्यू असाइन करें;
2. यदि दूसरे वेरिएबल का मान वेरिएबल M के मान से अधिक है, तो वेरिएबल के मान को दूसरे वेरिएबल के मान से बदलें;
3. यदि तीसरे वेरिएबल का मान वेरिएबल M के मान से अधिक है, तो वेरिएबल M के मान को तीसरे वेरिएबल के मान से बदल दें;< बीआर /> 4. यदि चौथे चर का मान M चर के मान से अधिक है, तो चर के मान को चौथे चर के मान से बदल दें।

यह देखा जा सकता है कि प्रत्येक  संख्या (चलो इसे X से निरूपित करते हैं) हमने चर M के साथ तुलना इस प्रकार की:
 
स्यूडोकोड
<पूर्व> इनपुट एक्स अगर (एम <एक्स) तो   एम = एक्स
इस कोड में मुख्य बात यह निर्धारित करना है कि वेरिएबल M का प्रारंभिक मान क्या होगा।
आमतौर पर, अधिकतम या न्यूनतम खोजने की समस्या को हल करते समय, वेरिएबल M का प्रारंभिक मान पहली संख्या के बराबर असाइन किया जाता है।
इस प्रकार, उपरोक्त कोड को संख्याओं की संख्या से 1 गुना कम निष्पादित किया जाना चाहिए (क्योंकि पहली संख्या दर्ज की जानी चाहिए और वेरिएबल M के प्रारंभिक मान के रूप में संग्रहीत की जानी चाहिए)।
यदि हमारे पास कीबोर्ड से सेट की गई संख्याओं की संख्या है (उदाहरण के लिए, वेरिएबल n में), तो हम एक चक्र (2 से n) का उपयोग करके व्यवस्थित कर सकते हैं नंबर वेरिएबल को स्टोर करने के लिए एक ही नंबर।

कार्यक्रम को स्वयं लिखने का प्रयास करें।

अधिकतम सभी में नहीं

यदि हमें दर्ज की गई सभी संख्याओं के बीच अधिकतम (न्यूनतम) खोजने की आवश्यकता है, लेकिन केवल उन संख्याओं के बीच जो एक निश्चित स्थिति को पूरा करती हैं, तो हमें इस तथ्य को ध्यान में रखना चाहिए कि पहली संख्या जिसे हम अधिकतम के प्रारंभिक मान के रूप में लेते हैं (न्यूनतम) हमेशा हमारी आवश्यकताओं को पूरा नहीं करेगा।

उदाहरण के लिए, यदि हम अधिकतम नकारात्मक संख्या की तलाश कर रहे हैं, तो डेटा सेट होना: \(\{5, -2, 4, 2, -1, -3\}\ ) हमें अधिकतम के प्रारंभिक मान में संख्या 5 मिलेगी, और यह धनात्मक है और किसी भी ऋणात्मक से अधिक है। और इसलिए हालत X > M हमेशा असत्य होगा।

इसलिए, पिछली समस्या से एल्गोरिदम में ऋणात्मक संख्या के लिए केवल एक चेक जोड़ना पर्याप्त नहीं है, इस तथ्य को भी ध्यान में रखना आवश्यक है कि पहली संख्या आवश्यक शर्त को पूरा नहीं कर सकती है (इस मामले में, नकारात्मक हो ).

आप लूप के अंदर निम्न शर्त जोड़कर इसे ठीक कर सकते हैं:

स्यूडोकोड
<पूर्व> यदि एक्स नकारात्मक है, तो यदि M >= 0 या M < एक्स, फिर एम = एक्स
निर्दिष्ट कोड में,  M >= 0 स्थिति आपको  M = X क्रिया करने की अनुमति देती है, भले ही चर में शुरू में एक मान होता है जो स्पष्ट रूप से बाकी की तुलना में अधिक होता है (हमारे उदाहरण में, मान 5 के बराबर है)।

हम यह भी ध्यान देते हैं कि यदि संख्याओं की श्रेणी ज्ञात है, तो निर्दिष्ट सीमा से न्यूनतम (अधिकतम) संख्या को अधिकतम (न्यूनतम) के प्रारंभिक मान के रूप में लिया जा सकता है।

कार्य

एन नंबर दिए गए हैं। अनुक्रम में दूसरा सबसे बड़ा तत्व खोजें।

यह समस्या दो व्याख्याओं की अनुमति देती है।
उदाहरण के लिए, यदि हमें संख्याओं का एक समूह दिया गया है: \(10\ 15\ 20\ 35\ 14\ 35\ 10\), तो उत्तर क्या होना चाहिए ?
"दूसरा सबसे बड़ा तत्व" के तहत या केवल "दूसरी अधिकतम", को इस रूप में समझा जा सकता है:
1) वह मान जो अंतिम स्थान पर होगा यदि हम गैर-घटते क्रम में सभी मानों को व्यवस्थित (क्रमबद्ध) करते हैं (प्रत्येक अगला एक पिछले एक से अधिक या उसके बराबर है)। फिर संख्याओं के सुविचारित सेट के लिए उत्तर मान 35 होगा;
2) तत्व का मान, जो केवल अधिकतम से अधिक है। तो जवाब है 20।
यदि संख्या के सेट में केवल एक अधिकतम तत्व है (अन्य सभी कम हैं), तो दोनों व्याख्याएं समान हैं, और उत्तर दोनों मामलों के लिए समान होगा, अन्यथा उत्तर अलग होगा।

पहले मामले पर विचार करें (हम एल्गोरिथम स्यूडोकोड).
उत्तर खोजने के लिए, हम दो चरों का उपयोग करेंगे:
1) <कोड>अधिकतम1 -अधिकतम मान (पहला अधिकतम);
2) अधिकतम2 - दूसरा अधिकतम (हमारा उत्तर)।

यदि मूल्यों की सीमा में परिवर्तन ज्ञात है, तो प्रारंभिक मूल्यों के रूप में हम एक संख्या लेते हैं जो स्पष्ट रूप से सीमा की निचली सीमा से कम है (उदाहरण के लिए, -1000 की सीमा के साथ) से 1000 - नंबर लें -1001)
यदि मानों की सीमा अज्ञात है, तो आप पहले दो इनपुट संख्याओं को चर max1 और max2 के प्रारंभिक मानों में लिख सकते हैं, और फिर इनकी तुलना कर सकते हैं दो चर। <पूर्व> इनपुट एन // संख्याओं की संख्या इनपुट ए, बी मैक्स 1 = ए अधिकतम 2 = बी अगर बी > ए, फिर     मैक्स 1 = बी     अधिकतम 2 = ए
अगला, हम अन्य सभी तत्वों पर विचार करते हैं (पहले 2 पहले ही देखे जा चुके हैं, इसलिए हम तीसरे से शुरू करेंगे) <पूर्व> एनसी मैं के लिए 3 से एन इनपुट ए अगर एक > अधिकतम 1 // अधिकतम 1 से अधिक मान था वह max2 = max1 // पूर्व का पहला उच्च दूसरा बन जाता है max1 = a // नया तत्व पहला अधिकतम होगा अन्यथा // अगला तत्व max1 से अधिक नहीं है // इसकी तुलना अधिकतम 2 मान से की जानी चाहिए अगर एक > अधिकतम 2 वह max2 = a // इसे नए मान max2 के रूप में लें // max1 इस मामले में नहीं बदलता है सभी सभी केटीएस
इस एल्गोरिथम को स्वयं लागू करने का प्रयास करें।