मुख्य Python · #3 / 11
Control Flow
if/elif/else, for, while
यह क्यों मायने रखता है
Control flow वह तरीक़ा है जिससे आप समस्या के विवरण को क़दमों में बदलते हैं।
मूल विचार
Conditionals रास्ते चुनते हैं; loops बिना copy-paste के काम दोहराते हैं। जब भी iterable पहले से पता हो, while के बजाय for को प्राथमिकता दीजिए — for को ग़लत पढ़ना मुश्किल है और इसे अनंत बनाना भी मुश्किल है।
आज़माकर देखिए
if / elif / else सीढ़ी, एक छोटे game classifier के साथ:
def grade(score):
if score >= 90: return "A"
elif score >= 80: return "B"
elif score >= 70: return "C"
elif score >= 60: return "D"
else: return "F"
for s in [95, 82, 71, 64, 30]:
print(s, grade(s))
for एक range पर, enumerate के साथ ताकि index और value दोनों मिलें:
names = ["Ada", "Linus", "Margaret", "Grace"]
for i, n in enumerate(names, start=1):
print(f"{i:>2}. {n}")
while तब सबसे अच्छा है जब रुकने की शर्त कोई state हो, गिनती नहीं। break जल्दी बाहर निकल जाता है; continue अगली iteration पर छलाँग लगा देता है।
# Find the first square > 100
n = 1
while True:
if n * n > 100:
print("first n with n^2 > 100:", n)
break
n += 1
झटपट जाँच
- प्र:
continueकब इस्तेमाल करते हैं? उ: loop body का बाक़ी हिस्सा छोड़कर अगली iteration पर जाने के लिए।
छोटे अभ्यास
- 1 से 20 तक के सभी सम numbers का योग निकालिए।
- एक
whileloop का इस्तेमाल करके 10 से 1 तक के numbers print कीजिए।
आम ग़लतियाँ
- ग़लती:
whileमें अनंत loop। समाधान: loop variable को अपडेट करें। - ग़लती:
rangeमें एक-कम-एक-ज़्यादा (off-by-one)। समाधान: याद रखेंrangeअंत को शामिल नहीं करता।
मुख्य बातें
- जब हो सके तो iterable पर
forइस्तेमाल करें; जब रुकना state-आधारित हो तोwhile। - index+value loops के लिए
enumerate(seq),range(len(seq))से बेहतर है। breakबाहर निकलता है,continueछलाँग लगाता है — दोनों संयम से ठीक हैं।- Indentation ही block है; भूलने के लिए कोई
{}नहीं।