टोकन: प्रोग्राम के सबसे छोटे टुकड़े
टोकन प्रोग्राम का सबसे छोटा अर्थ वाला टुकड़ा है। ये पाँच तरह के होते हैं।
- कीवर्ड: तय अर्थ वाले शब्द, जैसे
if,for,def,True,None। इन्हें नाम की तरह नहीं रख सकते। - आइडेंटिफ़ायर: आपके बनाए नाम, जैसे
total,marks_1। अक्षर या _ से शुरू, अंक से नहीं, और बीच में स्पेस नहीं। - लिटरल: तय मान, जैसे
25,3.5,'hello',None। - ऑपरेटर: काम करने वाले चिह्न, जैसे
+,==,and। - पंक्चुएटर:
( ) [ ] { } : , #जैसे चिह्न।
डेटा प्रकार: म्यूटेबल और इम्यूटेबल
हर मान का एक प्रकार होता है। type(x) से देखें।
- संख्याएँ:
int(पूर्ण संख्या),float(दशमलव),complex(जैसे2+3j),bool(True/False)। - क्रम (sequence):
str,list,tuple। - मैपिंग:
dict(key : value जोड़े)। None: यानी "कोई मान नहीं"।
म्यूटेबल और इम्यूटेबल
म्यूटेबल = मेमोरी में उसी जगह बदल सकता है। इम्यूटेबल = बदल नहीं सकता; बदलने पर नया मान बनता है।
- म्यूटेबल: list, dict, set।
- इम्यूटेबल: int, float, bool, str, tuple।
id(x) से जाँचें। L.append(4) के बाद id(L) वही रहता है। n = n + 1 के बाद id(n) बदल जाता है।
ऑपरेटर और उनकी प्राथमिकता
- अंकगणितीय:
+ - * / // % **।/हमेशा float देता है (7/2 = 3.5)।//फ़्लोर भाग है (7//2 = 3,-7//2 = -4)।%शेषफल देता है। - संबंधपरक:
== != < > <= >=— उत्तर True या False। - तार्किक:
not,and,or। - असाइनमेंट:
= += -= *=आदि। - पहचान:
is,is not। सदस्यता:in,not in।
क्रम (सबसे ऊँचा पहले)
() → ** → एकल - → * / // % → + - → तुलना → not → and → or। ध्यान दें: ** दाएँ से बाएँ चलता है, इसलिए 2**3**2 = 2**9 = 512।
नियंत्रण प्रवाह: if, for, while, break, continue
if-elif-else ऊपर से शर्तें जाँचता है। पहली True शर्त चलती है; बाकी छूट जाती हैं।
for हर आइटम पर चलता है: for i in range(1, 6): से 1 से 5 मिलते हैं। range(start, stop, step) में stop कभी शामिल नहीं होता।
while तब तक दोहराता है जब तक शर्त True है। अंदर वेरिएबल बदलना न भूलें, वरना लूप कभी ख़त्म नहीं होगा।
break लूप से तुरंत बाहर निकालता है। continue इस बारी का बचा हिस्सा छोड़कर अगली बारी पर जाता है। लूप का else तभी चलता है जब लूप break के बिना ख़त्म हो।
स्ट्रिंग
स्ट्रिंग अक्षरों की कतार है। इंडेक्स 0 पहला है; -1 आख़िरी।
स्लाइसिंग: s[start:stop:step]। s = 'PYTHON' के लिए: s[1:4] = 'YTH', s[::-1] = 'NOHTYP', s[-3:] = 'HON'।
स्ट्रिंग इम्यूटेबल है: s[0] = 'J' से एरर आता है। काम के मेथड: len(), upper(), lower(), title(), count(), find(), replace(), split(), join(), strip(), isdigit(), isalpha()।
लिस्ट, ट्यूपल और डिक्शनरी
लिस्ट (म्यूटेबल)
L = [10, 20, 30]। मेथड: append(x) अंत में एक आइटम, extend(seq) कई आइटम, insert(i, x), pop(i) इंडेक्स से हटाकर लौटाता है, remove(x) मान से हटाता है, sort(), reverse(), index(x), count(x)।
ट्यूपल (इम्यूटेबल)
T = (10, 20, 30)। एक आइटम वाले ट्यूपल में कॉमा ज़रूरी: (5,)। केवल count() और index()। न बदलने वाले डेटा के लिए अच्छा।
डिक्शनरी (म्यूटेबल)
D = {'Asha': 92, 'Ravi': 75}। key अलग-अलग और इम्यूटेबल होनी चाहिए। D['Zoya'] = 81 जोड़ता या बदलता है। मेथड: keys(), values(), items(), get(k), update(), pop(k), del D[k]।
करके देखें: चलाने से पहले अनुमान लगाएँ
पायथन (IDLE या कोई ऑनलाइन एडिटर) खोलें। हर पंक्ति का उत्तर पहले कॉपी में लिखें, फिर चलाएँ: print(7//2, -7//2, 7%3), print('PYTHON'[1:4]), L=[1,2]; M=L; M.append(3); print(L), print(2**3**2)। हर गलत अनुमान एक नियम याद दिलाता है। फिर 3D के आख़िरी कदम में म्यूटेबल-इम्यूटेबल जाँचें।
मुख्य सूत्र और परिभाषाएँ
- म्यूटेबल: list, dict, set · इम्यूटेबल: int, float, bool, str, tuple
- क्रम: () > ** > एकल - > * / // % > + - > तुलना > not > and > or
- s[start:stop:step]: stop शामिल नहीं
- range(start, stop, step): stop शामिल नहीं
हल किए गए उदाहरण
1. आउटपुट बताइए: print(17 // 5, 17 % 5, 17 / 5)
17 // 5 = 3 (पूरा भाग)। 17 % 5 = 2 (शेषफल)। 17 / 5 = 3.4 (हमेशा float)। आउटपुट: 3 2 3.4
2. हल करें: 10 + 4 * 3 ** 2 // 6
पहले **: 3 ** 2 = 9। फिर * और // बाएँ से दाएँ: 4 * 9 = 36, 36 // 6 = 6। अंत में +: 10 + 6 = 16।
3. s = 'COMPUTER'। s[2:6], s[-3:], s[::2] बताइए।
इंडेक्स: C0 O1 M2 P3 U4 T5 E6 R7। s[2:6] = 'MPUT'। s[-3:] = 'TER'। s[::2] इंडेक्स 0,2,4,6 = 'CMUE'।
4. L = [5, 2, 8]; M = L; M.append(1); print(L)। क्या छपेगा और क्यों?
M = L कॉपी नहीं बनाता; दोनों नाम एक ही लिस्ट पर हैं। M से append करने पर वही लिस्ट बदली। आउटपुट: [5, 2, 8, 1]।
5. उपयोगकर्ता की दी हुई स्ट्रिंग में स्वर (vowels) गिनने का प्रोग्राम लिखिए।
s = input('Enter text: ') count = 0 for ch in s.lower(): if ch in 'aeiou': count += 1 print('Vowels:', count)
6. D = {'a': 1, 'b': 2}। D['a'] = 10 और D['c'] = 3 के बाद D क्या होगा? D.get('z', 0) क्या देगा?
पुरानी key का मान बदलता है, नई key जुड़ती है। D = {'a': 10, 'b': 2, 'c': 3}। 'z' नहीं है, इसलिए get बिना एरर के 0 देगा।
आम गलतियाँ
- t = (5) को ट्यूपल समझना। यह सिर्फ़ int 5 है; (5,) लिखें।
- M = L को कॉपी समझना। असली कॉपी के लिए L.copy() या L[:] लें।
- भूल जाना कि range() और स्लाइसिंग में stop शामिल नहीं होता।
- शर्त में == की जगह = लिखना, या स्ट्रिंग में s[0] = 'X' करना।