ዓይነቶችና መቀየር
በ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.Each row is one step: the line that just ran, and every name's value after it.
| Name | Value after line 1 |
|---|---|
| text | '3.7'new |
| price | not made yet |
| whole | not made yet |
Output so far
Step 1 of 4
Step 1 of 4. Line 1: text = "3.7". text is now '3.7'.
| Step | Line | text | price | whole | Printed |
|---|---|---|---|---|---|
| 1 | 1 | '3.7' | not made yet | not made yet | |
| 2 | 2 | '3.7' | 3.7 | not made yet | |
| 3 | 3 | '3.7' | 3.7 | 3 | |
| 4 | 4 | '3.7' | 3.7 | 3 | 3 |
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ኡንና ጠቅላላውን በሁለት የአስርዮሽ ቦታዎች አሳዩ።
VAT: 187.50 birr
Total: 1,437.50 birrYour code
price_text = "1250"In the editor, press Escape then Tab to move on.
መፍትሄውን አሳይHide the solution
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"እንኳ። ባዶ ጽሑፍና0Falseናቸው።