Python တွင် စာကြောင်းများ (အခင်းအကျင်းများ) နှင့် နံပါတ်များစာရင်းများကို တစ်ခုနှင့်တစ်ခုသို့ ပြောင်းခြင်း။

စီးပွားရေးလုပ်ငန်း

အောက်ပါအကြောင်းအရာများ၊ နမူနာကုဒ်များနှင့်အတူ၊ Python တွင် စာရင်းများ (အခင်းအကျင်းများ) (str) နှင့် နံပါတ်များစာရင်း (int၊ float) ကို မည်သို့ပြောင်းလဲရမည်ကို ရှင်းပြထားသည်။

  • နံပါတ်များစာရင်းကို စာကြောင်းများစာရင်းသို့ ပြောင်းပါ။
    • နံပါတ်တစ်ခုကို ဒဿမစာကြောင်းအဖြစ် ပြောင်းပါ။
    • ဂဏန်းတန်ဖိုးများကို binary၊ octal နှင့် hexadecimal strings အဖြစ်သို့ ပြောင်းသည်။
    • ကိန်းဂဏန်းတန်ဖိုးကို ကိန်းဂဏန်းအမှတ်အသားတစ်ခုအဖြစ် ပြောင်းသည်။
  • စာကြောင်းများစာရင်းကို နံပါတ်များစာရင်းသို့ ပြောင်းပါ။
    • ဒဿမလိုင်းကို ဂဏန်းအဖြစ် ပြောင်းပါ။
    • ဒွိ၊ အဋ္ဌမ၊ နှင့် ဆဋ္ဌမတန်းများကို ဂဏန်းများအဖြစ် ပြောင်းသည်။
    • exponential notation တွင် စာကြောင်းများကို ဂဏန်းတန်ဖိုးများအဖြစ် ပြောင်းသည်။
    • ဂဏန်းအဖြစ်သို့ ပြောင်းလဲနိုင်သော စာကြောင်းများကိုသာ ပြောင်းပါ။

စာရင်းတစ်ခုမှ စာရင်းအသစ်တစ်ခုကို ထုတ်ပေးသောအခါ၊ စာရင်းနားလည်နိုင်မှုသည် ကွင်းပတ်အတွက်ထက် စာရေးရန် ပိုမိုလွယ်ကူပါသည်။ ဤဆောင်းပါးရှိ နမူနာကုဒ်သည် စာရင်းနားလည်မှုများကိုလည်း အသုံးပြုပါသည်။ စာရင်းနားလည်မှုအသေးစိတ်အတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

စာရင်းများသည် မတူညီသောဒေတာအမျိုးအစားများကို သိမ်းဆည်းနိုင်ပြီး array များနှင့် တင်းကြပ်စွာကွဲပြားသည်ကို သတိပြုပါ။ အောက်ပါကိစ္စများတွင် array (စံပြစာကြည့်တိုက်) သို့မဟုတ် NumPy ကိုသုံးပါ။

  • မှတ်ဉာဏ်အရွယ်အစားနှင့် မှတ်ဉာဏ်လိပ်စာများ လိုအပ်သည့် လုပ်ငန်းစဉ်များကို ကိုင်တွယ်လိုပါသည်။
  • ကြီးမားသောဒေတာအတွဲများ စသည်တို့အတွက် ဂဏန်းလုပ်ဆောင်ခြင်းအတွက် array များကို ကိုင်တွယ်လိုသည်။

နံပါတ်များစာရင်းကို စာကြောင်းများစာရင်းသို့ ပြောင်းပါ။

နံပါတ်တစ်ခုကို ဒဿမစာကြောင်းအဖြစ် ပြောင်းပါ။

ဂဏန်းမှ စာကြောင်းသို့ ပြောင်းရန် str() ကိုသုံးပါ။

Python တွင်၊ ကိန်းဂဏန်းများကို exponential၊ hexadecimal၊ နှင့် binary (hexadecimal and binary notation) အပါအဝင် ဖော်မတ်အမျိုးမျိုးဖြင့် ဖော်ပြနိုင်သည်။ str() ပြောင်းလဲခြင်းသည် ပုံမှန်ဒဿမအမှတ်အသားဖြင့် စာကြောင်းတစ်ခုသို့ ရလဒ်ထွက်သည်။

ဂဏန်းအရေအတွက်ပေါ်မူတည်၍ ကိန်းဂဏန်းအမှတ်အသားကို အလိုအလျောက်အသုံးပြုနိုင်ပါသည်။

l_n = [-0.5, 0, 1.0, 100, 1.2e-2, 0xff, 0b11]

l_n_str = [str(n) for n in l_n]
print(l_n_str)
# ['-0.5', '0', '1.0', '100', '0.012', '255', '3']

ဂဏန်းတန်ဖိုးများကို binary၊ octal နှင့် hexadecimal strings အဖြစ်သို့ ပြောင်းသည်။

ဒွိ၊ အဋ္ဌမ၊ သို့မဟုတ် ဆဋ္ဌမမြောက် (ဒွိသင်္ကေတ၊ အဋ္ဌကထာအမှတ်အသား၊ သို့မဟုတ် ဆဋ္ဌမဂဏန်းအမှတ်အသား) လိုင်းများကို ပြောင်းရန် အောက်ပါနည်းလမ်းများကို ရရှိနိုင်ပါသည်။

  • bin()
  • oct()
  • hex()
  • format()
  • str.format()

ဖော်မတ်() လုပ်ဆောင်ချက်ဖြင့် သုညကို ဖြည့်ပြီး ဂဏန်းများကို ချိန်ညှိနိုင်သည်။

l_i = [0, 64, 128, 192, 256]

l_i_hex1 = [hex(i) for i in l_i]
print(l_i_hex1)
# ['0x0', '0x40', '0x80', '0xc0', '0x100']

l_i_hex2 = [format(i, '04x') for i in l_i]
print(l_i_hex2)
# ['0000', '0040', '0080', '00c0', '0100']

l_i_hex3 = [format(i, '#06x') for i in l_i]
print(l_i_hex3)
# ['0x0000', '0x0040', '0x0080', '0x00c0', '0x0100']

ကိန်းဂဏန်းတန်ဖိုးကို ကိန်းဂဏန်းအမှတ်အသားတစ်ခုအဖြစ် ပြောင်းသည်။

အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်း၊ အချို့သောကိစ္စများသည် ဂဏန်းအရေအတွက်ပေါ်မူတည်၍ အထပ်ကိန်းအမှတ်အသားတွင် အလိုအလျောက်ဖြစ်နိုင်သည်။ သို့သော်၊ exponential notation တွင် string တစ်ခုသို့ အမြဲတမ်းပြောင်းရန်၊ အောက်ပါများထဲမှ တစ်ခုကို အသုံးပြုပါ။

  • format()
  • str.format()

format() function နှင့် string method str.format() ဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

mantissa အပိုင်း၏ ဂဏန်းအရေအတွက်ကို သတ်မှတ်နိုင်ပါသည်။ စာလုံးကြီး E ကို အငြင်းအခုံတစ်ခုအဖြစ် အသုံးပြုပါက၊ အထွက်ကြိုးသည် စာလုံးကြီး E လည်းဖြစ်သည်။

l_f = [0.0001, 123.456, 123400000]

l_f_e1 = [format(f, 'e') for f in l_f]
print(l_f_e1)
# ['1.000000e-04', '1.234560e+02', '1.234000e+08']

l_f_e2 = [format(f, '.3E') for f in l_f]
print(l_f_e2)
# ['1.000E-04', '1.235E+02', '1.234E+08']

စာကြောင်းများစာရင်းကို နံပါတ်များစာရင်းသို့ ပြောင်းပါ။

ဒဿမလိုင်းကို ဂဏန်းအဖြစ် ပြောင်းပါ။

စာကြောင်းမှ နံပါတ်သို့ ပြောင်းရန် int() သို့မဟုတ် float() ကိုသုံးပါ။

int() သည် ကိန်းပြည့်အဖြစ်သို့ ပြောင်းလဲခြင်းဖြစ်ပြီး float() သည် Float-point နံပါတ်သို့ ပြောင်းလဲခြင်း ဖြစ်သည်။

float() တွင် ချန်လှပ်ထားသော ကိန်းပြည့်အပိုင်းပါသော စာကြောင်းများကို ကိန်းပြည့်အပိုင်းအတွက် 0 နှင့် ဖြည့်စွက်ထားသည်။

l_si = ['-10', '0', '100']

l_si_i = [int(s) for s in l_si]
print(l_si_i)
# [-10, 0, 100]

l_sf = ['.123', '1.23', '123']

l_sf_f = [float(s) for s in l_sf]
print(l_sf_f)
# [0.123, 1.23, 123.0]

ဒွိ၊ အဋ္ဌမ၊ နှင့် ဆဋ္ဌမတန်းများကို ဂဏန်းများအဖြစ် ပြောင်းသည်။

int() ၏ ဒုတိယအငြင်းအခုံသည် အစွန်းတစ်စဖြစ်နိုင်သည်- ဒွိနရီအတွက် 2၊ အဋ္ဌမကိန်းအတွက် 8၊ နှင့် ဆယ်ကိန်းဂဏန်းအတွက် 16၊ ကြိုးတစ်ချောင်းကို ဂဏန်းတစ်ခုအဖြစ်သို့ ပြောင်းနိုင်သည်။

0 ကို သတ်မှတ်ထားပါက၊ အောက်ပါ ရှေ့ဆက်စာကြောင်းများ တစ်ခုစီကို ကိန်းပြည့်အဖြစ် ပြောင်းလဲပါသည်။

  • 0b
    • binary ဂဏန်းများ
  • 0o
    • အဋ္ဌမ
  • 0x
    • ဆဋ္ဌမကိန်း
l_sb = ['0011', '0101', '1111']

l_sb_i = [int(s, 2) for s in l_sb]
print(l_sb_i)
# [3, 5, 15]

l_sbox = ['100', '0b100', '0o77', '0xff']

l_sbox_i = [int(s, 0) for s in l_sbox]
print(l_sbox_i)
# [100, 4, 63, 255]

exponential notation တွင် စာကြောင်းများကို ဂဏန်းတန်ဖိုးများအဖြစ် ပြောင်းသည်။

အထူးသတ်မှတ်ချက်မလိုအပ်ဘဲ exponential notation ရှိ စာကြောင်းများကို float() ဖြင့် တိုက်ရိုက်ပြောင်းလဲနိုင်သည်။

l_se = ['1.23e3', '0.123e-1', '123']

l_se_f = [float(s) for s in l_se]
print(l_se_f)
# [1230.0, 0.0123, 123.0]

ဂဏန်းအဖြစ်သို့ ပြောင်းလဲနိုင်သော စာကြောင်းများကိုသာ ပြောင်းပါ။

int() သို့မဟုတ် float() သို့ နံပါတ်တစ်ခုအဖြစ်သို့ ပြောင်းလဲ၍မရသော စာကြောင်းတစ်ခုကို ဖြတ်သန်းခြင်းသည် ValueError ဖြစ်လိမ့်မည်။

Error တွင် false ကို ပြန်ပေးသည့် လုပ်ဆောင်ချက်အသစ်ဟု သတ်မှတ်ပါက၊ ပြောင်းလဲနိုင်သော အစိတ်အပိုင်းများကိုသာ နံပါတ်အဖြစ် ပြောင်းလဲနိုင်ပြီး စာရင်း၏ဒြပ်စင်များ ဖြစ်လာနိုင်သည်။

def is_int(s):
    try:
        int(s)
    except ValueError:
        return False
    else:
        return True

def is_float(s):
    try:
        float(s)
    except ValueError:
        return False
    else:
        return True

l_multi = ['-100', '100', '1.23', '1.23e2', 'one']

l_multi_i = [int(s) for s in l_multi if is_int(s)]
print(l_multi_i)
# [-100, 100]

l_multi_f = [float(s) for s in l_multi if is_float(s)]
print(l_multi_f)
# [-100.0, 100.0, 1.23, 123.0]