በf-strings ማቅረብ
ጽሑፍንና ቁጥሮችን ጎን ለጎን ማሳየት አሁንም ትችላላችሁ። በዚህ ትምህርት መጨረሻ እሴቶችን በቀጥታ በዓረፍተ ነገር መሀል ማስገባት፣ ብርን በሁለት የአስርዮሽ ቦታዎችና በሺህ መለያዎች ማሳየት፣ ደረሰኝን በንጹህ ዓምዶች ማሰለፍ ትችላላችሁ። መሣሪያው f-string ይባላል፤ ከአሁን ጀምሮ በሁሉም ፕሮግራም ማለት ይቻላል ትጠቀሙበታላችሁ።
በጽሑፍ ውስጥ ያሉ እሴቶች
ጽሑፍንና ቁጥሮችን በ+ ማገናኘት ቶሎ ይከብዳል። ቁጥሩ መጀመሪያ በstr() ወደ ጽሑፍ መቀየር አለበት (ለምን እንደሆነ ትምህርት 1.6 ያብራራል)፤ እያንዳንዱ ክፍት ቦታም በእጅ መጻፍ አለበት፦
total = 450
print("Total: " + str(total) + " birr")In the editor, press Escape then Tab to move on.
ሌላ መንገድ እነሆ። ከመክፈቻው ትምህርተ ጥቅስ በፊት ያለውን f አስተውሉ። ምን ያሳያል?
ውጤቱን ገምቱ
Decide before you look. Guessing wrong is how this sticks.
item = "macchiato"
price = 45
print(f"One {item} costs {price} birr.")Python prints
One macchiato costs 45 birr.
በf-string ውስጥ በጥምዝ ቅንፍ {} ውስጥ ያለ ማንኛውም ነገር በእሴቱ ይተካል። {item} macchiato ይሆናል፤ {price} ደግሞ 45 ይሆናል።
ከፊቱ f ያለው ስትሪንግ
ይባላል። Python እያንዳንዱን {name} ያ ስም በሚያመለክተው እሴት ይተካዋል፤ ቁጥሮችንም ለእናንተ ወደ ጽሑፍ ይቀይራል። አሁን አንዲት ፊደል ተዉ። ይህንን ገምቱ።
ውጤቱን ገምቱ
Decide before you look. Guessing wrong is how this sticks.
total = 450
print("Total: {total} birr")Python prints
Total: {total} birrf ከሌለ ተራ ስትሪንግ ነው፤ ቅንፎቹም ተራ characters ብቻ ናቸው። Python አያስጠነቅቃችሁም፤ ይህን የf-string በጣም የተለመደ ስህተት የሚያደርገውም ይኸው ነው። በውጤታችሁ (output) ውስጥ ቅንፎች ካያችሁ የጎደለ f ፈልጉ።
Total: 450 birr እንዲያሳይ የጎደለውን f ጨምሩ፦
total = 450
print("Total: {total} birr")In the editor, press Escape then Tab to move on.
ቅንፎቹ ስም ብቻ ሳይሆን ማንኛውንም expression ሊይዙ ይችላሉ። Python ያሰላዋል፤ ውጤቱንም በጽሑፉ ውስጥ ያስገባዋል።
cups = 3
price = 45
print(f"{cups} cups cost {cups * price} birr.")In the editor, press Escape then Tab to move on.
ቁጥሮችን ማቅረብ
በቅንፎቹ ውስጥ ከእሴቱ በኋላ ኮሎን (:) ይጀምራል፦ እሴቱ እንዴት እንደሚታይ የሚናገሩ መመሪያዎች። አሁን ማወቅ የሚገባቸው ሦስቱ፦
:.2fበትክክል ሁለት የአስርዮሽ ቦታዎችን ያሳያል።:,በሺዎች መካከል ኮማ ያስገባል።:,.2fሁለቱንም ያደርጋል፤ ብርን የምታሳዩት በዚህ ነው።
ውጤቱን ገምቱ
Decide before you look. Guessing wrong is how this sticks.
print(f"{1234.5:,.2f}")Python prints
1,234.50
, የሺህ መለያውን ይጨምራል፤ .2f ደግሞ ሁለት የአስርዮሽ ቦታዎችን ያሳያል፤ .5ን .50 ለማድረግም ዜሮ ይጨምራል።
price = 1234567.891
print(f"{price:.2f}")
print(f"{price:,}")
print(f"{price:,.2f}")In the editor, press Escape then Tab to move on.
priceን ወደ 2035 / 3፣ ማለትም የአንድ ሂሳብ ድርሻ፣ ቀይራችሁ እንደገና አስኪዱት (run)። የሚጠጋጋው የሚታየው ብቻ ነው፤ እሴቱ ራሱ አይቀየርም።
በ.2f ውስጥ ያለው f «እንደ ዴሲማል ቁጥር አሳይ» ማለት ነው፤ ስለዚህ የሚሰራው በቁጥሮች ላይ ብቻ ነው። በአጋጣሚ አሃዞችን የያዘ ጽሑፍ ቁጥር አይደለም፦
ዓምዶችን ማሰለፍ
ከ< ወይም ከ> በኋላ ያለ ቁጥር ስፋትን ይወስናል። :<12 12 charactersን እሴቱን በግራ አድርጎ ይሞላል፤ :>8 ደግሞ 8ን እሴቱን በቀኝ አድርጎ ይሞላል። ደረሰኞች ቀጥ ያሉ ዓምዶች የሚያገኙት በዚህ ነው።
item = "Macchiato"
price = 45
print(f"{item:<12}{price:>8.2f}")
item = "Sambusa"
price = 30
print(f"{item:<12}{price:>8.2f}")In the editor, press Escape then Tab to move on.
{price:>8.2f} ሁለቱንም ያጣምራል፦ 8 characters ስፋት፣ በቀኝ የተሰለፈ፣ ሁለት የአስርዮሽ ቦታዎች። ዋጋዎቹ መጠናቸው ምንም ይሁን በአስርዮሽ ነጥቡ ላይ ይሰለፋሉ። 1250 ዋጋን ሞክሩ።
በግ (bug) ለመፈለግ አንድ የመጨረሻ ዘዴ፦ በቅንፎቹ ውስጥ ከስም በኋላ = አስቀምጡ፤ Python ስሙንና እሴቱን ያሳያል።
price = 45
total = price * 3
print(f"{price=}")
print(f"{total=}")In the editor, press Escape then Tab to move on.
አንድ ፕሮግራም የተሳሳተ መልስ ሲሰጥ እንደነዚህ ያሉ ጥቂት መስመሮች እያንዳንዱ ስም በዚያ ቅጽበት ምን እንደሚያመለክት ያሳያችኋል።
መልመጃ
በዓምዶች የተሰለፈ ደረሰኝ
የዕቃዎቹ ስሞች በግራ በኩል 12 characters ስፋት ባለው ዓምድ፣ ዋጋዎቹ ደግሞ በቀኝ በኩል 8 characters ስፋት ባለው ዓምድ በሁለት የአስርዮሽ ቦታዎች የሚታዩበት ባለ ሦስት መስመር ደረሰኝ፣ ልክ እንደዚህ አሳዩ። ለዋጋዎቹ ስሞችን ተጠቀሙ።
Macchiato 45.00
Sambusa 30.00
Water 20.00Your code
macchiato = 45
sambusa = 30
water = 20In 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.
macchiato = 45
sambusa = 30
water = 20
print(f"{'Macchiato':<12}{macchiato:>8.2f}")
print(f"{'Sambusa':<12}{sambusa:>8.2f}")
print(f"{'Water':<12}{water:>8.2f}")ዋና ዋና ነጥቦች
- f-string ከትምህርተ ጥቅሱ በፊት
fአለው፤ በውስጡ ያለ እያንዳንዱ{expression}በእሴቱ ይተካል። fን ከረሳችሁ ቅንፎቹ እንዳሉ ይታያሉ፤ ምንም ስህተት አይመጣም።:.2fሁለት የአስርዮሽ ቦታዎችን ያሳያል፤:,የሺህ መለያዎችን ይጨምራል፤:,.2fሁለቱንም ያደርጋል።:<12እና:>8ለዓምዶች ስፋትንና አሰላለፍን ይወስናሉ።f"{price=}"ስምንና እሴቱን ያሳያል፤ ይህም በግ ስትፈልጉ ይረዳል።