অধ্যায় 2 · Python-এর মৌলিক বিষয়
সংখ্যা, লেখা ও True/False
- পৃষ্ঠা 4 / 20
- 5 মিনিট পড়া
একটা AI প্রোগ্রাম যে ডেটা নিয়ে কাজ করে, তার প্রায় সবই তিন রকমের একটা: সংখ্যা (স্কোর, দাম, টোকেনের সংখ্যা), লেখা (প্রম্পট, ডকুমেন্ট, উত্তর) অথবা হ্যাঁ/না তথ্য (উত্তর কি শেষ? কলটা কি ব্যর্থ হলো?)। Python প্রতিটার জন্য আলাদা টাইপ দেয়।
সংখ্যা: int আর float
পূর্ণসংখ্যা হলো int (integer); দশমিকসহ সংখ্যা float। গাণিতিক অপারেটরগুলো যেমনটা ভাবছেন তেমনই, সাথে তিনটা কাজের জিনিস:
print(7 + 3) # যোগ
print(7 - 3) # বিয়োগ
print(7 * 3) # গুণ
print(7 / 2) # ভাগ সবসময় float দেয়
print(7 // 2) # ফ্লোর ভাগ: শুধু পূর্ণ অংশ
print(7 % 2) # ভাগশেষ (modulo)
print(2 ** 10) # ঘাত (power)10
4
21
3.5
3
1
1024// আর % প্রায়ই লাগে: // বলে কয়টা পূর্ণ দল হয় (৪৭টা ফলাফলে ১০টা করে কয় পাতা পুরো হয়?), আর % বলে কত বাকি থাকে (সংখ্যাটা কি জোড়? n % 2 == 0)।
float-এর একটা চমক
print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
price_per_1k_tokens = 0.002
tokens_used = 12_500 # আন্ডারস্কোর দিলে বড় সংখ্যা পড়তে সুবিধা
cost = tokens_used / 1000 * price_per_1k_tokens
print(f"Cost: ${cost:.4f}")0.30000000000000004
0.3
Cost: $0.02500.1 + 0.2 ঠিক 0.3 নয়। কম্পিউটার float রাখে বাইনারিতে, যেখানে 0.1 হুবহু লেখা যায় না — যেমন 1/3 দশমিকে হুবহু লেখা যায় না। সব প্রোগ্রামিং ভাষাতেই এটা সত্য। টাকা বা স্কোর দেখানোর সময় রাউন্ড করুন; আর হিসাবের ফলাফলের float তুলনায় কখনো == ব্যবহার করবেন না।
লেখা: স্ট্রিং
str (string) হলো উদ্ধৃতিচিহ্নের ভেতরের লেখা। একক '…' আর দ্বৈত "…" উদ্ধৃতি একইভাবে কাজ করে; তিনটা উদ্ধৃতি """…""" দিলে লেখা কয়েক লাইনে ছড়াতে পারে, যা লম্বা প্রম্পটের জন্য সুবিধাজনক। স্ট্রিংয়ের সাথে অনেক বিল্ট-ইন মেথড থাকে — মানের সাথে যুক্ত ফাংশন, ডট দিয়ে ডাকতে হয়:
prompt = " Summarise this article in three bullet points. "
clean = prompt.strip() # দুই প্রান্তের স্পেস বাদ
print(clean)
print(len(clean)) # কয়টা অক্ষর
print(clean.upper())
print(clean.lower())
print(clean.replace("three", "five"))
print(clean.startswith("Summarise"))
print("article" in clean) # এই লেখাটা কি ভেতরে আছে?
print(clean.split()[:3]) # শব্দে ভাগ করে প্রথম ৩টা রাখাSummarise this article in three bullet points.
46
SUMMARISE THIS ARTICLE IN THREE BULLET POINTS.
summarise this article in three bullet points.
Summarise this article in five bullet points.
True
True
['Summarise', 'this', 'article']স্ট্রিং অপরিবর্তনীয় (immutable): upper()-এর মতো মেথড আসল স্ট্রিং বদলায় না; নতুন একটা স্ট্রিং ফেরত দেয়। তাই ফলাফলটা রেখে দিই: clean = prompt.strip()।
ইনডেক্সিং আর স্লাইসিং
প্রতিটা অক্ষরের একটা অবস্থান আছে, যাকে বলে ইনডেক্স, শুরু হয় 0 থেকে। ঋণাত্মক ইনডেক্স গোনে শেষ থেকে। স্লাইস [start:stop] একটা অংশ কেটে নেয়, আর stop অবস্থানটা বাদ থাকে:
word = "Python"
print(word[0]) # প্রথম অক্ষর (গোনা শুরু 0 থেকে)
print(word[-1]) # শেষ অক্ষর
print(word[0:3]) # 0, 1, 2 নম্বর অক্ষর (শেষ সীমা বাদ)
print(word[2:]) # 2 নম্বর থেকে শেষ পর্যন্তP
n
Pyt
thonf-string: লেখা বানানোর সবচেয়ে ভালো উপায়
উদ্ধৃতিচিহ্নের আগে একটা f দিলে { }-এর ভেতরে সরাসরি মান বসানো যায়। কোলনের পরে ফরম্যাটও ঠিক করা যায়:
name = "Nadia"
score = 87.456
tokens = 1234567
print(f"Hello, {name}!")
print(f"Score: {score:.1f}") # one decimal place
print(f"Tokens: {tokens:,}") # thousands separator
print(f"{name!r} scored {score:.0f}%")Hello, Nadia!
Score: 87.5
Tokens: 1,234,567
'Nadia' scored 87%AI মডেলের জন্য প্রম্পট আপনি সারাক্ষণ এভাবেই বানাবেন: f"Translate this into Bangla: {text}"।
এক টাইপ থেকে আরেক টাইপে রূপান্তর
int(), float(), str() আর bool() মান রূপান্তর করে। এটা জরুরি, কারণ input() সবসময় লেখা ফেরত দেয়:
age_text = "21"
print(age_text + "1") # লেখা জোড়া লাগানো
print(int(age_text) + 1) # আগে সংখ্যায় রূপান্তর
print(float("3.5") * 2)
print(str(42) + " tokens")
print(bool(0), bool(5), bool(""), bool("hi"))211
22
7.0
42 tokens
False True False Trueরূপান্তর করতে ভুলে গেলে Python একটা TypeError দিয়ে থামিয়ে দেয় — আপনি সংখ্যা যোগ করতে চেয়েছিলেন নাকি লেখা জুড়তে, সেটা সে আন্দাজ করে না। ব্যবহারকারী লিখেছে 500:
tokens = input("How many tokens? ")
print(tokens + 100)How many tokens? 500
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(tokens + 100)
~~~~~~~^~~~~
TypeError: can only concatenate str (not "int") to strসমাধান: int(tokens) + 100।
True বা False: বুলিয়ান
bool হয় True, নয়তো False। তুলনা করলে বুলিয়ান পাওয়া যায়, আর and, or, not দিয়ে সেগুলো জোড়া যায়:
tokens = 900
limit = 1000
print(tokens < limit)
print(tokens == 900) # == তুলনা করে; = মান রাখে
print(tokens != limit)
print(tokens > 0 and tokens < limit)
print(not tokens < limit)True
True
True
True
False| অপারেটর | অর্থ |
|---|---|
== / != | সমান / সমান নয় |
< <= > >= | ছোট, সর্বোচ্চ, বড়, অন্তত |
and | দুই পাশই True হলে তবেই True |
or | অন্তত এক পাশ True হলে True |
not | True আর False উল্টে দেয় |
আগের bool() উদাহরণের শেষ লাইনটা খেয়াল করুন: 0 আর খালি লেখা "" False হিসেবে ধরা হয় (এদের বলে "falsy"); অন্য যেকোনো সংখ্যা বা খালি-নয় এমন লেখা True। পরের পাতাগুলোতে এটা ব্যবহার করবেন: if answer: মানে "উত্তরটা যদি খালি না হয়"।
নিজে চেষ্টা করুন
- একটা মডেলের দাম প্রতি ১,০০০ টোকেনে $0.003। ব্যবহারকারীর কাছে জানতে চান কত টোকেন লেগেছে, আর ৪ দশমিক ঘর পর্যন্ত খরচ প্রিন্ট করুন।
- একটা বাক্য নিন আর তাতে কয়টা শব্দ আর কয়টা অক্ষর আছে প্রিন্ট করুন।
split()আর ইনডেক্স দিয়ে একটা বাক্যের প্রথম আর শেষ শব্দ প্রিন্ট করুন।