Skip to content

ዓይነቶችና መቀየር

2 min read

በPython እያንዳንዱ እሴት ዓይነት አለው፤ ዓይነቱ ደግሞ በእሴቱ ምን ማድረግ እንደምትችሉ ይወስናል። ሦስቱን አስቀድማችሁ አግኝታችኋል፦ ሙሉ ቁጥሮች፣ ዴሲማል ቁጥሮችና ጽሑፍ። በዚህ ትምህርት መጨረሻ የአንድን እሴት ዓይነት መፈተሽ፣ ሆን ብላችሁ ከአንዱ ዓይነት ወደ ሌላው መቀየር ትችላላችሁ፤ ሰዎችን የሚያስገርሙ መቀየሮችንም ታውቃላችሁ።

እያንዳንዱ እሴት ዓይነት አለው

type() አንድ ነገር ምን ዓይነት እሴት እንደሆነ ይነግራችኋል። አራቱንም መስመሮች ገምቱ።

ውጤቱን ገምቱ

Decide before you look. Guessing wrong is how this sticks.

print(type(250))
print(type(2.5))
print(type("250"))
print(type(True))

Python prints

<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>

250 ሙሉ ቁጥር (int) ነው፤ 2.5 የአስርዮሽ ነጥብ አለው (float)፤ "250" ደግሞ ከአሃዞች የተሰራ ቢሆንም ጽሑፍ (str) ነው። True bool ነው፤ በክፍል 2 ብዙ የምትጠቀሙበት የአዎ ወይም የአይ እሴት።

በትምህርት 1.3 "5" + 3 ያልሰራው፣ በትምህርት 1.5 ደግሞ የinput() መልሶች መቀየር ያስፈለጋቸው በ ምክንያት ነው። Python ካልጠየቃችሁት በስተቀር ጽሑፍን እንደ ቁጥር፣ ቁጥርንም እንደ ጽሑፍ አይቆጥርም።

type() የራሳችሁን ግምቶች ለመፈተሽም ጥሩ መንገድ ነው። አንድ ነገር እንግዳ ባህሪ ሲያሳይ የሚመለከታቸውን የእያንዳንዱን እሴት ዓይነት አሳዩ። አሁን በ10 / 2 ላይ ሞክሩት።

print(type(10 / 2))

In the editor, press Escape then Tab to move on.

ከአንዱ ዓይነት ወደ ሌላው መቀየር

የእያንዳንዱ ዓይነት ስም ወደዚያ ዓይነት የሚቀይር ፋንክሽንም ነው፦ int()፣ float() እና str()። እንደ ጽሑፍ የተጻፈ ዋጋ ቁጥር፣ ከዚያ ሙሉ ቁጥር ሲሆን ደረጃ በደረጃ ተከተሉት። ትምህርተ ጥቅሶቹ፣ ከዚያ የአስርዮሽ ቦታዎቹ ሲጠፉ ተመልከቱ።

Step through it

Press Next to run one line at a time and watch each name change.

text = "3.7"
price = float(text)
whole = int(price)
print(whole)
Names and their values after line 1
NameValue after line 1
text'3.7'new
pricenot made yet
wholenot made yet

Output so far

Step 1 of 4

Step 1 of 4. Line 1: text = "3.7". text is now '3.7'.

int(3.7) 4ን ሳይሆን 3ን እንደሰጠ አስተውሉ። int() አያጠጋጋም፤ ከአስርዮሽ ነጥቡ በኋላ ያለውን ሁሉ ይቆርጣል።

ጥያቄ

int(9.99) ምን ይሰጣል?

int() ግን ስለ ጽሑፍ ጥብቅ ነው። ሙሉ ቁጥር የሚመስል ጽሑፍን፣ ዙሪያውን ያሉ ክፍት ቦታዎችንም ጨምሮ ይቀበላል፤ የአስርዮሽ ነጥብ ያለበትን ጽሑፍ ግን አይቀበልም፦

print(int(" 42 "))

In the editor, press Escape then Tab to move on.

str() ደግሞ በተቃራኒው ቁጥርን ወደ ጽሑፍ ይቀይራል፤ ስለዚህ ከሌላ ጽሑፍ ጋር ማገናኘት ትችላላችሁ፦

total = 450
print("Total: " + str(total) + " birr")
print(f"Total: {total} birr")

In the editor, press Escape then Tab to move on.

ሁለቱም መስመሮች ያንኑ ያሳያሉ። f-string ራሱ ይቀይርላችኋል፤ ለማንበብም ይቀላል፤ ስለዚህ ለማሳየት ብቻ str() የሚያስፈልጋችሁ አልፎ አልፎ ነው። የሚያስፈልጋችሁ በእውነት ጽሑፍ ስትፈልጉ ነው፤ ለምሳሌ በአንድ ቁጥር ውስጥ ያሉትን አሃዞች በlen(str(total)) ለመቁጠር።

True፣ False እና None

bool ወይ True (እውነት) ወይ False (ሐሰት) ነው። ሌሎች እሴቶችንም ወደ bool መቀየር ትችላላችሁ። እነዚህ ምን የሚሰጡ ይመስላችኋል?

ውጤቱን ገምቱ

Decide before you look. Guessing wrong is how this sticks.

print(bool("False"))
print(bool(""))
print(bool(0))
print(bool(250))

Python prints

True
False
False
True

የጽሑፍ bool() ባዶ ላልሆነ ለማንኛውም ጽሑፍ True ነው፤ "False" ለሚለው ጽሑፍ እንኳ፦ Python ቃላቱን አያነብም። False የሚሆነው ባዶው ስትሪንግ "" ብቻ ነው። ለቁጥሮች ደግሞ 0 False ነው፤ ሌላው ቁጥር ሁሉ True ነው።

ያ የመጀመሪያው መስመር ሁሉንም ያስገርማል። በክፍል 2 ifን ስታገኙ አስታውሱት፦ የተጠቃሚ መልስ "no" ቢሆንም አሁንም ባዶ ያልሆነ ጽሑፍ ነው፤ ስለዚህ እንደ True ይቆጠራል።

አንድ ተጨማሪ እሴት፦ None «እዚህ ምንም እሴት የለም» ማለት ነው። እስካሁን ምንም እንዳልተሰጠ Python የሚናገርበት መንገድ ነው፤ ዓይነቱም NoneType ነው። በክፍል 5 ከፋንክሽኖች ጋር በደንብ ታገኙታላችሁ።

መልመጃ

በተጻፈ ዋጋ ላይ VAT ጨምሩ

አንድ ዋጋ ልክ ከinput() እንደሚመጣው እንደ ጽሑፍ፣ "1250"፣ ይደርሳል። ወደ ቁጥር ቀይሩት፣ 15% VAT ጨምሩ፣ VATኡንና ጠቅላላውን በሁለት የአስርዮሽ ቦታዎች አሳዩ።

Output
VAT: 187.50 birr
Total: 1,437.50 birr

Your code

price_text = "1250"

In the editor, press Escape then Tab to move on.

መፍትሄውን አሳይ

This is one way to solve it, not the only one. If yours prints the same thing, it works.

price_text = "1250"
price = float(price_text)
vat = price * 15 / 100
total = price + vat
print(f"VAT: {vat:.2f} birr")
print(f"Total: {total:,.2f} birr")

ዋና ዋና ነጥቦች

  • እያንዳንዱ እሴት ዓይነት አለው፦ int፣ float፣ str፣ bool፣ እና የNone የራሱ ዓይነት። type() ያሳየዋል።
  • int()፣ float() እና str() ይቀይራሉ። int() ሳያጠጋጋ የአስርዮሽ ቦታዎችን ይቆርጣል።
  • int() የሙሉ ቁጥር ጽሑፍን ያነባል (ክፍት ቦታዎች ችግር የለባቸውም)፤ የአስርዮሽ ጽሑፍን ግን አያነብም፦ መጀመሪያ float()ን ተጠቀሙ።
  • f-strings ቁጥሮችን ለእናንተ ወደ ጽሑፍ ይቀይራሉ፤ ለማሳየት ብቻ str() የሚያስፈልጋችሁ አልፎ አልፎ ነው።
  • ባዶ ያልሆነ ማንኛውም ጽሑፍ bool() True ነው፤ "False" እንኳ። ባዶ ጽሑፍና 0 False ናቸው።