input & Type Conversion
input() ဆိုတာ ဘာလဲ? (User ဆီက input တောင်းမယ်)
bro ရဲ့ program က user (သုံးတဲ့သူ) ကို မေးခွန်းလှမ်းမေးတာ။
bro နာမည် ၊ အသက် မေးမယ်။
အဲ့လို မေးခွန်းမေးပြီး user က keyboard ကနေ တစ်ခုခုပြန်ရိုက်ထည့်ပြီး Enter ခေါက်တဲ့အထိ bro ရဲ့ program က စောင့်နေပေးလိမ့်မယ်။ User က Enter ခေါက်လိုက်တာနဲ့ သူရိုက်ထည့်လိုက်တဲ့ တန်ဖိုး (value) ကို bro ဆီ ပြန်ပို့ပေးတယ်။
ဥပမာ နာမည်မေးမယ်:
# input() ကို သုံးပြီး user ကို နာမည်မေးမယ်
name = input("bro နာမည် ဘယ်လိုခေါ်လဲ : ")
# user ရိုက်ထည့်လိုက်တဲ့ နာမည်ကို ပြန်သုံးမယ်
print("Xello " + name + "။ bro နာမည်လန်းတယ်။")
bro ဒါကို Run လိုက်ရင် Terminal (အမည်းရောင် screen) မှာ bro နာမည် ဘယ်လိုခေါ်လဲ : ဆိုပြီး ပေါ်လာမယ်။ bro က Kyaw Kyaw လို့ရိုက်ပြီး Enter ခေါက်လိုက်ရင်၊ သူက Xello Kyaw Kyaw။ bro နာမည်လန်းတယ်။ ဆိုပြီး ပြန်ထုတ်ပေးလိမ့်မယ်။
input() ကနေ bro ဘာရိုက်ထည့်လိုက်သည်ဖြစ်စေ၊ သူက အဲ့ဒါကို String (စာသား) အမျိုးအစား (str) အနေနဲ့ပဲ အမြဲတမ်း ပြန်ပေးတယ်။
bro က နံပါတ်
25 လို့ ရိုက်ထည့်လိုက်ရင်တောင်၊ Python က အဲ့ဒါကို 25 (ဂဏန်း) လို့မမြင်ဘူး။ သူက အဲ့ဒါကို "25" (String နှစ်ကျနော်း) လို့ပဲ မြင်တယ်။
Stuck သွားတဲ့ ဥပမာ:
bro က user ဆီက အသက်မေးပြီး နောက်နှစ်ဆို အသက်ဘယ်လောက်ဖြစ်မလဲ တွက်ချင်တယ် ဆိုပါစို့။
# ဒီလိုရေးရင် stuck သွားမယ်
age = input("bro အသက် ဘယ်လောက်လဲ: ") # ဥပမာ 25 လို့ ရိုက်ထည့်လိုက်တယ်
# age ထဲမှာ `"25"` (String) ကို ရောက်နေတယ်
next_year = age + 1 # ဒီနေရာမှာ Error တက်ပြီ
ဒါကို Run ရင် Python က Error တက်လိမ့်မယ်။ ဘာလို့လဲဆိုတော့ Python အမြင်မှာ bro က String ("25") ကို ဂဏန်း (1) နဲ့ ပေါင်းခိုင်းနေလို့ပဲ။ စာသား နဲ့ ဂဏန်း ပေါင်းလို့မရဘူးလေ။
Type Conversion (အမျိုးအစားပြောင်းမယ်)
Type Conversion (တစ်ချို့က Type Casting လို့ခေါ်တယ်) ဆိုတာက Data Type တစ်ခုကနေ နောက်တစ်ခုကို ပြောင်းလဲတာ။
- str (စာသား) ကို int (ကိန်းပြည့်) ပြောင်းမယ်။
- int (ကိန်းပြည့်) ကို float (ဒသမကိန်း) ပြောင်းမယ်။
- float (ဒသမကိန်း) ကို str (စာသား) ပြောင်းမယ်။
ဒါတွေကို လုပ်ဖို့ Function လေးတွေရှိတယ်။
Type Conversion Functions:
- int() - String ကို Integer (ကိန်းပြည့်) အဖြစ် ခွံချွတ်ပြောင်းပေးတယ်။
- float() - String ကို Float (ဒသမကိန်း) အဖြစ် ပြောင်းပေးတယ်။
- str() - ဂဏန်း (int or float) ကို String (စာသား) အဖြစ် ပြန်ပြောင်းပေးတယ်။
ကဲ... ခုနက stuck နေတဲ့ ပြဿနာကို ပြန်ရှင်းမယ်
ကျနော်တို့ input() ကနေရတဲ့ "25" (String) ကို int() သုံးပြီး 25 (Integer) အဖြစ် ပြောင်းရမယ်။
age_string = input("bro အသက် ဘယ်လောက်လဲ: ") # ဥပမာ 25 လို့ ရိုက်ထည့်တယ်
# age_string ထဲမှာ `"25"` (String) ရှိနေတယ်
# ဒီမှာ အမျိုးအစားပြောင်း လိုက်ပြီ
age_number = int(age_string)
# age_number ထဲမှာ 25 (Integer) ဖြစ်သွားပြီ
# အခုမှ ပေါင်းလို့ရပြီ
next_year = age_number + 1
print("နောက်နှစ်ဆို bro အသက် " + str(next_year) + " ပြည့်ပြီ။")ရှင်းလင်းချက်:
int(age_string)က"25"ကို25ဖြစ်အောင် ပြောင်းပေးလိုက်တယ်။- နောက်ဆုံး print() မှာ
str(next_year)ကို တွေ့လား?next_yearက26(Integer) ဖြစ်နေလို့ သူ့ကို String ("26") ပြန်ပြောင်းပြီးမှ+နဲ့ ဆက်လို့ရတာ။
Pro Way
Developer တွေက အဲ့လို နှစ်ဆင့်ခွဲမရေးဘူး။ တန်းရေးတယ်။ input() ကို int() နဲ့ ထပ် (wrap) ပြီး ရေးလိုက်တယ်။
# ဒီလို ရေးတာ ပိုမိုက်တယ်
age = int( input("bro အသက် ဘယ်လောက်လဲ: ") ) # 25 လို့ ရိုက်တယ်
# age ထဲကို `"25"` (String) မရောက်တော့ဘူး
# int() က `"25"` ကို 25 (Integer) ပြောင်းပြီးမှ age ထဲ တန်းထည့်ပေးတယ်
next_year = age + 1
print("နောက်နှစ်ဆို bro အသက် " + str(next_year) + " ပြည့်ပြီ။")ပေါင်းစပ် ဥပမာ
ကဲ... ဂဏန်းနှစ်လုံးတောင်းပြီး ပေါင်းတဲ့ program သေးသေးလေး ရေးကြည့်မယ်။
print("ဂဏန်း ၂ လုံး ပေါင်းမလို့။")
# နံပါတ် (၁) ကို တောင်းမယ်။ ဒသမကိန်းတွေလည်း ပါနိုင်လို့ float() သုံးမယ်
num1 = float( input("ပထမ နံပါတ် ထည့်: ") )
# နံပါတ် (၂) ကို တောင်းမယ်
num2 = float( input("ဒုတိယ နံပါတ် ထည့်: ") )
# ပေါင်းမယ် (ဒါက ဂဏန်းတွေ ပေါင်းတာ၊ String ဆက်တာ မဟုတ်ဘူး)
total = num1 + num2
# အဖြေကို ပြန်ထုတ်မယ်။ total က float (ဂဏန်း) မို့ str() နဲ့ စာသားပြန်ပြောင်းမယ်
print("အဖြေက: " + str(total))Output ဥပမာ:
ဂဏန်း ၂ လုံး ပေါင်းမလို့။
ပထမ နံပါတ် ထည့်: 10.5
ဒုတိယ နံပါတ် ထည့်: 5
အဖြေက: 15.5Practical Example 1: Calculator Program
print("=== ရိုးရှင်းတဲ့ Calculator ===")
# ဂဏန်း နှစ်လုံး တောင်းမယ်
num1 = float(input("ပထမ ဂဏန်း: "))
num2 = float(input("ဒုတိယ ဂဏန်း: "))
# တွက်မယ်
print("\n=== ရလဒ်များ ===")
print(f"ပေါင်းခြင်း: {num1} + {num2} = {num1 + num2}")
print(f"နုတ်ခြင်း: {num1} - {num2} = {num1 - num2}")
print(f"မြှောက်ခြင်း: {num1} × {num2} = {num1 * num2}")
print(f"စားခြင်း: {num1} ÷ {num2} = {num1 / num2}")Practical Example 2: Personal Info Program
print("=== info သိချင်ပါတယ် ===")
# အချက်အလက်တွေ စုဆောင်းမယ်
name = input("နာမည်: ")
age = int(input("အသက်: "))
height = float(input("အရပ် (cm): "))
city = input("မြို့: ")
# info ပြန်ပြမယ်
print("\n=== info ===")
print(f"နာမည်: {name}")
print(f"အသက်: {age} နှစ်")
print(f"အရပ်: {height} cm")
print(f"နေထိုင်ရာ: {city}")
# တွက်ချက်မှုတွေ
years_to_thirty = 30 - age
height_in_meters = height / 100
print(f"\n30 နှစ် အထိ: {years_to_thirty} နှစ် ကျန်ပါသေးတယ်")
print(f"အရပ် မီတာ ဖြင့်: {height_in_meters} m")Practical Example 3: Shopping Calculator
print("=== ဈေးဝယ် တွက်စက် ===")
# ပစ္စည်းတစ်ခုချင်းစီရဲ့ ဈေးနှုန်း
item1_name = input("ပထမ ပစ္စည်း အမည်: ")
item1_price = float(input(f"{item1_name} ဈေးနှုန်း: "))
item2_name = input("ဒုတိယ ပစ္စည်း အမည်: ")
item2_price = float(input(f"{item2_name} ဈေးနှုန်း: "))
item3_name = input("တတိယ ပစ္စည်း အမည်: ")
item3_price = float(input(f"{item3_name} ဈေးနှုန်း: "))
# စုစုပေါင်း တွက်မယ်
total = item1_price + item2_price + item3_price
# ရလဒ်ပြမယ်
print("\n=== ပြေစာ ===")
print(f"{item1_name}: {item1_price} ကျပ်")
print(f"{item2_name}: {item2_price} ကျပ်")
print(f"{item3_name}: {item3_price} ကျပ်")
print("-------------------")
print(f"စုစုပေါင်း: {total} ကျပ်")Type Conversion Reference Table
အမျိုးအစား ပြောင်းတဲ့ function တွေကို အလွယ်တကူ မှတ်ထားနိုင်ဖို့:
1. String ကနေ Number ပြောင်းတာ:
# String to Integer
age_str = "25"
age_int = int(age_str)
print(age_int) # 25 (Integer)
# String to Float
price_str = "99.99"
price_float = float(price_str)
print(price_float) # 99.99 (Float)
# Error ဖြစ်မယ့် ဥပမာ
# wrong = int("10.5") # Error! int() က ဒသမကိန်း မယူနိုင်ဘူး
# wrong = int("hello") # Error! စာသားကို ဂဏန်း မပြောင်းနိုင်ဘူး2. Number ကနေ String ပြောင်းတာ:
# Integer to String
age = 25
age_str = str(age)
print("အသက်: " + age_str) # "အသက်: 25"
# Float to String
price = 99.99
price_str = str(price)
print("ဈေး: " + price_str + " ကျပ်") # "ဈေး: 99.99 ကျပ်"3. Integer နဲ့ Float ပြောင်းတာ:
# Integer to Float
whole_number = 10
decimal_number = float(whole_number)
print(decimal_number) # 10.0
# Float to Integer (ဒသမကိန်း ပိုင်းကို ဖြုတ်ပစ်တယ်)
price = 99.99
rounded_price = int(price)
print(rounded_price) # 99 (ဒသမအပိုင်း ပျောက်သွားတယ်)- int() က ဒသမအပိုင်းကို ဖြုတ်တယ်။ Round လုပ်တာ မဟုတ်ဘူး။
- String ကနေ int() ပြောင်းတဲ့အခါ ဒသမကိန်း string ဆိုရင် Error တက်တယ်။
- စာသားကို ဂဏန်းမပြောင်းနိုင်ဘူး (ဥပမာ: int("hello") က Error)
အမှားများဆုံး
Mistake 1: Type Conversion မလုပ်ဘဲ ဂဏန်းတွက်ချင်တာ
# အမှား
age = input("အသက်: ") # "25" (String) ရမယ်
next_year = age + 1 # Error!
# မှန်တဲ့ နည်း
age = int(input("အသက်: ")) # 25 (Integer) ရမယ်
next_year = age + 1 # အဆင်ပြေတယ်!Mistake 2: String ကို ဂဏန်းနဲ့ ဆက်ချင်တာ
# မှားတဲ့ နည်း
age = 25
print("အသက်: " + age) # Error! String နဲ့ Integer ဆက်လို့မရ
# နည်းအမှန် (၁)
age = 25
print("အသက်: " + str(age)) # အသက်: 25
# မှန်တဲ့ နည်း (၂) - f-string သုံးတာ (အဆင်ပြေဆုံး)
age = 25
print(f"အသက်: {age}") # အသက်: 25Mistake 3: Float String ကို int() နဲ့ ပြောင်းချင်တာ
# နည်းအမှား
price_str = "99.99"
price_int = int(price_str) # Error! int() က ဒသမကိန်း string မယူနိုင်
# မှန်တဲ့ နည်း (၁) - float() သုံးပြီး int() ပြောင်းတာ
price_str = "99.99"
price_float = float(price_str) # "99.99" → 99.99
price_int = int(price_float) # 99.99 → 99
# မှန်တဲ့ နည်း (၂) - တန်းပြောင်းတာ
price_str = "99.99"
price_int = int(float(price_str)) # "99.99" → 99.99 → 99- input() က အမြဲတမ်း String ပြန်ပေးတယ်။
- ဂဏန်းတွက်ချင်ရင် int() သို့မဟုတ် float() နဲ့ ပြောင်းရမယ်။
- String နဲ့ Number ကို + နဲ့ ဆက်လို့မရဘူး။ str() နဲ့ ပြောင်းရမယ် (သို့မဟုတ် f-string သုံးမယ်)။
- int() က ဒသမကိန်း string ကို တိုက်ရိုက် မပြောင်းနိုင်ဘူး။ float() နဲ့ အရင်ပြောင်းရမယ်။
အနှစ်ချုပ်
# User Input ယူတာ
name = input("နာမည်: ") # String အဖြစ် ရမယ်
age = int(input("အသက်: ")) # Integer အဖြစ် ရမယ်
height = float(input("အရပ်: ")) # Float အဖြစ် ရမယ်
# Type Conversion
int("25") # "25" → 25
float("99.99") # "99.99" → 99.99
str(25) # 25 → "25"
float(10) # 10 → 10.0
int(99.99) # 99.99 → 99
# String Concatenation
age = 25
print("အသက်: " + str(age)) # စဉ်းစားရတယ်
print(f"အသက်: {age}") # လွယ်တယ် (f-string)
# Type Checking
print(type("hello")) # <class 'str'>
print(type(25)) # <class 'int'>
print(type(99.99)) # <class 'float'>