Skip to content

በf-strings ማቅረብ

2 min read

ጽሑፍንና ቁጥሮችን ጎን ለጎን ማሳየት አሁንም ትችላላችሁ። በዚህ ትምህርት መጨረሻ እሴቶችን በቀጥታ በዓረፍተ ነገር መሀል ማስገባት፣ ብርን በሁለት የአስርዮሽ ቦታዎችና በሺህ መለያዎች ማሳየት፣ ደረሰኝን በንጹህ ዓምዶች ማሰለፍ ትችላላችሁ። መሣሪያው 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")
Pick the output

Python prints

Total: {total} birr

f ከሌለ ተራ ስትሪንግ ነው፤ ቅንፎቹም ተራ 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 ስፋት ባለው ዓምድ በሁለት የአስርዮሽ ቦታዎች የሚታዩበት ባለ ሦስት መስመር ደረሰኝ፣ ልክ እንደዚህ አሳዩ። ለዋጋዎቹ ስሞችን ተጠቀሙ።

Output
Macchiato      45.00
Sambusa        30.00
Water          20.00

Your code

macchiato = 45
sambusa = 30
water = 20

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.

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=}" ስምንና እሴቱን ያሳያል፤ ይህም በግ ስትፈልጉ ይረዳል።