input & Type Conversion

input() ဆိုတာ ဘာလဲ? (User ဆီက input တောင်းမယ်)

bro ရဲ့ program က user (သုံးတဲ့သူ) ကို မေးခွန်းလှမ်းမေးတာ။

bro နာမည် ၊ အသက် မေးမယ်။

အဲ့လို မေးခွန်းမေးပြီး user က keyboard ကနေ တစ်ခုခုပြန်ရိုက်ထည့်ပြီး Enter ခေါက်တဲ့အထိ bro ရဲ့ program က စောင့်နေပေးလိမ့်မယ်။ User က Enter ခေါက်လိုက်တာနဲ့ သူရိုက်ထည့်လိုက်တဲ့ တန်ဖိုး (value) ကို bro ဆီ ပြန်ပို့ပေးတယ်။

ဥပမာ နာမည်မေးမယ်:

ask_name.py
# input() ကို သုံးပြီး user ကို နာမည်မေးမယ် name = input("bro နာမည် ဘယ်လိုခေါ်လဲ : ") # user ရိုက်ထည့်လိုက်တဲ့ နာမည်ကို ပြန်သုံးမယ် print("Xello " + name + "။ bro နာမည်လန်းတယ်။")

bro ဒါကို Run လိုက်ရင် Terminal (အမည်းရောင် screen) မှာ bro နာမည် ဘယ်လိုခေါ်လဲ : ဆိုပြီး ပေါ်လာမယ်။ bro က Kyaw Kyaw လို့ရိုက်ပြီး Enter ခေါက်လိုက်ရင်၊ သူက Xello Kyaw Kyaw။ bro နာမည်လန်းတယ်။ ဆိုပြီး ပြန်ထုတ်ပေးလိမ့်မယ်။

မမေ့နဲ့ input() မှာ အသက်တစ်ခုရှိတယ်။ အဲ့ဒါက...

input() ကနေ bro ဘာရိုက်ထည့်လိုက်သည်ဖြစ်စေ၊ သူက အဲ့ဒါကို String (စာသား) အမျိုးအစား (str) အနေနဲ့ပဲ အမြဲတမ်း ပြန်ပေးတယ်။

bro က နံပါတ် 25 လို့ ရိုက်ထည့်လိုက်ရင်တောင်၊ Python က အဲ့ဒါကို 25 (ဂဏန်း) လို့မမြင်ဘူး။ သူက အဲ့ဒါကို "25" (String နှစ်ကျနော်း) လို့ပဲ မြင်တယ်။

Stuck သွားတဲ့ ဥပမာ:

bro က user ဆီက အသက်မေးပြီး နောက်နှစ်ဆို အသက်ဘယ်လောက်ဖြစ်မလဲ တွက်ချင်တယ် ဆိုပါစို့။

stuck_example.py
# ဒီလိုရေးရင် stuck သွားမယ် age = input("bro အသက် ဘယ်လောက်လဲ: ") # ဥပမာ 25 လို့ ရိုက်ထည့်လိုက်တယ် # age ထဲမှာ `"25"` (String) ကို ရောက်နေတယ် next_year = age + 1 # ဒီနေရာမှာ Error တက်ပြီ

ဒါကို Run ရင် Python က Error တက်လိမ့်မယ်။ ဘာလို့လဲဆိုတော့ Python အမြင်မှာ bro က String ("25") ကို ဂဏန်း (1) နဲ့ ပေါင်းခိုင်းနေလို့ပဲ။ စာသား နဲ့ ဂဏန်း ပေါင်းလို့မရဘူးလေ။

အဲ့ဒီ stuck သွားတဲ့ ပြဿနာကို ဖြေရှင်းဖို့... အောက်ကို ဆက်ကြည့်ပေး။

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) အဖြစ် ပြောင်းရမယ်။

solution_step_by_step.py
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) ပြီး ရေးလိုက်တယ်။

pro_way.py
# ဒီလို ရေးတာ ပိုမိုက်တယ် age = int( input("bro အသက် ဘယ်လောက်လဲ: ") ) # 25 လို့ ရိုက်တယ် # age ထဲကို `"25"` (String) မရောက်တော့ဘူး # int() က `"25"` ကို 25 (Integer) ပြောင်းပြီးမှ age ထဲ တန်းထည့်ပေးတယ် next_year = age + 1 print("နောက်နှစ်ဆို bro အသက် " + str(next_year) + " ပြည့်ပြီ။")
အလန်းစား။ input() ယူ၊ ချက်ချင်း int() နဲ့ ခွံချွတ်၊ variable ထဲထည့်။ ကိစ္စရှင်း။

ပေါင်းစပ် ဥပမာ

ကဲ... ဂဏန်းနှစ်လုံးတောင်းပြီး ပေါင်းတဲ့ program သေးသေးလေး ရေးကြည့်မယ်။

add_two_numbers.py
print("ဂဏန်း ၂ လုံး ပေါင်းမလို့။") # နံပါတ် (၁) ကို တောင်းမယ်။ ဒသမကိန်းတွေလည်း ပါနိုင်လို့ float() သုံးမယ် num1 = float( input("ပထမ နံပါတ် ထည့်: ") ) # နံပါတ် (၂) ကို တောင်းမယ် num2 = float( input("ဒုတိယ နံပါတ် ထည့်: ") ) # ပေါင်းမယ် (ဒါက ဂဏန်းတွေ ပေါင်းတာ၊ String ဆက်တာ မဟုတ်ဘူး) total = num1 + num2 # အဖြေကို ပြန်ထုတ်မယ်။ total က float (ဂဏန်း) မို့ str() နဲ့ စာသားပြန်ပြောင်းမယ် print("အဖြေက: " + str(total))

Output ဥပမာ:

Terminal Output
ဂဏန်း ၂ လုံး ပေါင်းမလို့။ ပထမ နံပါတ် ထည့်: 10.5 ဒုတိယ နံပါတ် ထည့်: 5 အဖြေက: 15.5
ဂေါ်။ bro float() သုံးထားလို့ 10.5 လို ဒသမကိန်းတွေလည်း ယူလို့ရတယ်။ int() ပဲ သုံးရင် 10.5 ထည့်တာနဲ့ Error တက်သွားမှာ။

Practical Example 1: Calculator Program

simple_calculator.py
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

personal_info.py
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

shopping_calculator.py
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_number.py
# 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 ပြောင်းတာ:

number_to_string.py
# 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 ပြောင်းတာ:

int_float_conversion.py
# 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 မလုပ်ဘဲ ဂဏန်းတွက်ချင်တာ

mistake_1.py
# အမှား age = input("အသက်: ") # "25" (String) ရမယ် next_year = age + 1 # Error! # မှန်တဲ့ နည်း age = int(input("အသက်: ")) # 25 (Integer) ရမယ် next_year = age + 1 # အဆင်ပြေတယ်!

Mistake 2: String ကို ဂဏန်းနဲ့ ဆက်ချင်တာ

mistake_2.py
# မှားတဲ့ နည်း age = 25 print("အသက်: " + age) # Error! String နဲ့ Integer ဆက်လို့မရ # နည်းအမှန် (၁) age = 25 print("အသက်: " + str(age)) # အသက်: 25 # မှန်တဲ့ နည်း (၂) - f-string သုံးတာ (အဆင်ပြေဆုံး) age = 25 print(f"အသက်: {age}") # အသက်: 25

Mistake 3: Float String ကို int() နဲ့ ပြောင်းချင်တာ

mistake_3.py
# နည်းအမှား 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() နဲ့ အရင်ပြောင်းရမယ်။

အနှစ်ချုပ်

quick_reference.py
# 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'>