1.2.12 · Coding › Introduction to Programming (Python)
Intuition Bada picture (YE kyun exist karte hain)
Strings har jagah hain: user input, file lines, web data, names, dates. Raw text messy hota hai — extra spaces, galat casing, saath chipke fields, missing values. String methods cleaning + reshaping ka toolbox hain. Tum almost kabhi bhi raw user text directly use nahi karte; use strip karo, lower karo, split karo, aur vapas assemble karo.
Key mental model: Python mein strings immutable hote hain. Koi bhi method kisi string ko change nahi karta — har method ek brand-new string return karta hai. Agar tumne return value capture nahi ki, toh kaam gaya paani mein.
Definition Aath kaam ke ghode
s.upper() / s.lower() ::: ek copy return karta hai jisme saare letters upar/neeche case ho jaate hain. Non-letters untouched rehte hain.
s.strip() ::: ek copy return karta hai jisme leading & trailing whitespace hata di jaati hai (strip(chars) unke bajaaye un chars mein se koi bhi hata deta hai).
s.split(sep) ::: string ko pieces ki ek list mein kaat deta hai, har sep par break karke. Koi sep nahi → whitespace ke kisi bhi run par split karo.
sep.join(list) ::: split ka ulta — strings ki ek iterable ko sep unke beech rakhke joD deta hai.
s.replace(old, new) ::: ek copy return karta hai jisme old ki har occurrence ko new se swap kar diya jaata hai.
s.find(sub) ::: sub ki pehli occurrence ka index return karta hai, ya -1 agar absent ho.
"...{}...".format(x) ::: {} placeholders mein values insert karke ek string build karta hai.
Intuition Immutability kyun matter karti hai
Kyunki "hi".upper() "hi" ko in-place edit nahi kar sakta, language tumhe ek naya object deti hai. Isliye beginners name.strip() apni line par likhte hain aur sochte hain kuch kyon nahi badla — tumhe reassign karna hoga : name = name.strip().
Tumhe yeh memorise karne ki zaroorat nahi — tum inhe reconstruct kar sakte ho. String characters ki ek sequence hoti hai jो 0,1,2,... index hoti hai. Har method bas un characters pe ek loop hai:
Worked example 2 — Ek CSV line parse karo aur use rebuild karo
line = "id,name,city"
fields = line.split( "," ) # ['id', 'name', 'city']
rebuilt = " | " .join(fields) # 'id | name | city'
split(",") kyun? Ek flat string ko ek aise list mein badle jise hum index/loop kar sakein.
join kyun, + nahi? join "between only" spacing automatically handle karta hai aur kaafi pieces ke liye bahut tez hai.
name.strip() meri variable clean kar dega"
Kyun sahi lagta hai: bahut si languages mein methods object ko mutate karti hain, isliye lagta hai string ab stripped hai.
Sach: strings immutable hain; strip() ek naya string return karta hai aur original untouched rehta hai.
Fix: reassign karo — name = name.strip().
find True/False return karta hai"
Kyun sahi lagta hai: "find" haan/na jaisa lagta hai, aur 0 falsy dikhta hai.
Sach: yeh ek index return karta hai. "abc".find("a") hai 0, jo falsy hai — isliye if s.find("a"): galat tarike se match-at-start ko "not found" samajhta hai!
Fix: != -1 test karo, ya in operator use karo: if "a" in s:.
split() aur split(' ') same hain"
Kyun sahi lagta hai: dono spaces par split karte lagte hain.
Sach: "a b".split() → ['a','b'] (runs collapse karta hai, empties drop karta hai). "a b".split(' ') → ['a','','b'] (empty piece rakhta hai).
Fix: human text tokenise karne ke liye bare split() use karo; jab separator structural ho (jaise commas) tab split(sep) use karo.
Recall Peek karne se pehle try karo
s.strip() ke baad reassign kyun karna padta hai?
Substring missing hone par find kya return karta hai?
split() aur split(' ') mein kya fark hai?
join likho jo ['a','b','c'] ke beech - rakhe.
Recall Ek 12-saal ke bacche ko explain karo (Feynman)
Socho ek string super-glued LEGO letters ki ek row hai — tum kabhi nahi original row ko rearrange kar sakte. Isliye har "tool" aslmein tumhare liye ek fresh copy banata hai. upper ek chillane wali copy banata hai, strip ek copy banata hai jiske khaali edges katey hue hain, split row ko chhoti rows ki ek basket mein har comma par snap kar deta hai, aur join ek basket ko ek row mein vapas joD deta hai beech mein ek chosen sticker rakhke. Kyunki yeh sab tumhe ek nayi row dete hain, tumhe use rakhna hoga (name = ...) warna woh ud jaayegi.
Mnemonic Text clean karne ka order
"SLuSH-J" → S trip → L ower → S plit → J oin. (Pehle edges trim karo, phir case normalise karo, phir tod do, phir reassemble karo.)
Are Python strings mutable or immutable? Immutable — har method ek NAYA string return karta hai.
s.upper() digits/symbols ke saath kya karta hai?Kuch nahi; sirf letters case hote hain.
s.strip() kya remove karta hai?Leading aur trailing whitespace (ya strip(chars) mein koi bhi chars).
Difference: "a b".split() vs "a b".split(' ')? ['a','b'] (collapse karta hai) vs ['a','','b'] (empty rakhta hai).
sep.join(list) kya karta hai?List items ko ek string mein joD deta hai sep unke beech rakhke (split ka ulta).
join n items ke liye kitne separators insert karta hai?n − 1 (sirf items ke beech).
s.replace("a","b") kya replace karta hai?HAR occurrence (limit karne ke liye count arg add karo).
s.find("x") kya return karta hai agar "x" absent ho?-1 (ek sentinel, error nahi).
if s.find("a"): buggy kyun hai?Index 0 par match falsy hai; != -1 use karo ya in operator.
"{:.1%}".format(0.5) kya deta hai?'50.0%' (×100, 1 decimal, percent sign).
Length-n string mein length-m sub find karte waqt last valid start index? n − m.
name.strip() ke baad reassign kyun karo?Original unchanged hai; cleaned copy return value hai.
Strings — indexing and slicing (find s[i:i+m] par rely karta hai)
Lists (split ek list produce karta hai, join ek consume karta hai)
Immutability in Python
f-strings (.format ka modern alternative)
Boolean truthiness (kyun 0/-1 traps find ke saath hote hain)
User input and validation
format fills placeholders