Skip to content

ስሞች (variables)

4 min read

እስካሁን በፕሮግራሞቻችን ውስጥ ያለ እያንዳንዱ እሴት (value) በቦታው ላይ በቀጥታ የተጻፈ ነበር፦ 45፣ "Selam"፣ 250 + 30። በዚህ ትምህርት ለእሴቶች ስም መስጠትን እንማራለን። አንድ ስም የሚያመለክተውን እሴት መቀየርንም እናያለን። = ስንጽፍ Python በትክክል ምን እንደሚያደርግም እንረዳለን። የቀረው ፕሮግራሚንግ በሙሉ የተገነባው በዚህ ሐሳብ ላይ ነው። ግን ብዙ ሰው የሚወድቅባቸው ጥቂት ወጥመዶች አሉት። ስለዚህ እያንዳንዳቸውን ሆን ብለን አንድ በአንድ እናልፍባቸዋለን።

በዚህ ክፍል ያሉ ትምህርቶች በሙሉ ምንም ነገር መጫን ሳያስፈልጋችሁ እዚሁ ገጽ ላይ ሙሉ በሙሉ ይሰራሉ።

ለእሴት ስም መስጠት

ይህን አጭር ፕሮግራም አንብቡና ምን እንደሚያሳይ ወስኑ። መልሱን ከመግለጣችሁ በፊት በእውነት ገምቱ።

ውጤቱን ገምቱ

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

price = 250
print(price)
price = 300
print(price)

Python prints

250
300

የመጀመሪያው print ሲሰራ price 250ን ያመለክታል፤ ሁለተኛው ሲሰራ ደግሞ 300ን ያመለክታል። Python መስመሮቹን ከላይ ወደ ታች በቅደም ተከተል ያስኬዳል።

price = 250 ለእሴቱ 250 price የሚል ስም ይሰጣል። ከዚያ በኋላ priceን ያለ ትምህርተ ጥቅስ በጻፍንበት ቦታ ሁሉ Python ስሙ የሚያመለክተውን እሴት ይጠቀማል። እንዲህ ያለው ስም በእንግሊዝኛ variable ይባላል። እኛ በቀላሉ እንለዋለን።

=ን «ያገኛል» ብለን እናንብበው፦ «price 250ን ያገኛል»። ይህ የሒሳቡ የእኩል ምልክት አይደለም። ትዕዛዝ ነው፦ መጀመሪያ በቀኝ በኩል ያለውን እሴት ማስላት፣ ከዚያ በግራ ያለው ስም ያንን እሴት እንዲያመለክት ማድረግ። እኛም «price 250 ነው» ወይም «price 250ን ያመለክታል» እንላለን።

አሁን ያንኑ ፕሮግራም መስመር በመስመር እንከተለው። ሰንጠረዡን ተመልከቱ፦ ከእያንዳንዱ መስመር በኋላ እያንዳንዱ ስም ምን እንደሚያመለክት ያሳያል።

Step through it

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

price = 250
print(price)
price = 300
print(price)
Names and their values after line 1
NameValue after line 1
price250new

Output so far

Step 1 of 4

Step 1 of 4. Line 1: price = 250. price is now 250.

አሁን ራሳችሁ አስኪዱት (run)። ከዚያ 300ን ወደ 275 ቀይራችሁ እንደገና አስኪዱት።

price = 250
print(price)
price = 300
print(price)

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

አንድ ስም በአንድ ጊዜ አንድ እሴት ብቻ ያመለክታል

ስምን እንደ ሳጥን ሳይሆን እንደ ስም መለያ እናስበው። መለያው በአንድ እሴት ላይ ብቻ ይንጠለጠላል። price = 300 ስንጽፍ Python መለያውን ከ250 ላይ አንስቶ 300 ላይ ይሰቅለዋል። ምንም ነገር አይከማችም። ታዲያ ይህ ምን ያሳያል?

ውጤቱን ገምቱ

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

name = "Abel"
name = "Hana"
print(name)
Pick the output

Python prints

Hana

ሁለተኛው መስመር name የሚለውን ስም ከ"Abel" ወደ "Hana" ያዞረዋል። "Abel" አልተቀመጠም፣ አልተደመረም፣ አልታወሰምም። አንድ ስም የሚያመለክተው በትክክል አንድ እሴት ብቻ ነው፤ ይኸውም የመጨረሻውን የተሰጠውን እሴት ነው።

AbelHana ወይም Abel Hanaን ከመረጣችሁ፣ ነገሮችን የሚሰበስብ ሳጥን እያሰባችሁ ነበር። ይህ ምስል በጀማሪዎች (beginner) ዘንድ በጣም የተለመደው ነው፤ ለPython ግን የተሳሳተ ነው። አዲስ እሴት አሮጌውን ይተካል፤ ስሙ ከዚያ በኋላ አዲሱን እሴት ብቻ ያመለክታል።

ጥያቄ

points = 0 ከዚያም points = 2 ከተጻፈ በኋላ points ስንት ነው?

አዲስ እሴት ለመስራት ስምን መጠቀም

የ= ቀኝ በኩል ስሞችን መጠቀም ይችላል፤ በግራ በኩል ያለውን ስም ጭምር። በሒሳብ count = count + 1 የማይቻል ነው። በPython ግን የተለመደ ነው። «count፣ count ሲደመር አንድን ያገኛል» ብለን እናንብበው። Python መጀመሪያ ቀኝ በኩሉን ያሰላል፤ ለዚህም count አሁን ያለውን እሴት ይጠቀማል። ከዚያ ስሙን ወደ ተገኘው አዲስ እሴት ያዞረዋል።

Step through it

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

count = 5
count = count + 1
print(count)
Names and their values after line 1
NameValue after line 1
count5new

Output so far

Step 1 of 3

Step 1 of 3. Line 1: count = 5. count is now 5.

አንድ ተጨማሪ ወጥመድ አለ። total = price * 2 እሴቱን የሚያሰላው አንድ ጊዜ ብቻ ነው፤ በዚያው ቅጽበት። totalን ሁልጊዜ ወቅታዊ የሚያደርግ ደንብ አያዘጋጅም። የዚህኛውን ውጤት ገምቱ።

ውጤቱን ገምቱ

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

price = 250
total = price * 2
price = 300
print(total)
Pick the output

Python prints

500

መስመር 2 250 * 2ን አስልቶ total 500ን እንዲያመለክት አደረገ። ከዚያ በኋላ priceን መቀየር የሚያንቀሳቅሰው price የሚለውን ስም ብቻ ነው። አዲስ እሴት እስክንሰጠው ድረስ total አሁንም 500ን ያመለክታል።

ፕሮግራሙ 600 እንዲያሳይ ቀይሩት፦ ከprice = 300 በኋላ ጠቅላላ ዋጋውን እንደገና አስሉ።

price = 250
total = price * 2
price = 300
print(total)

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

የሁለት እሴቶችን ቦታ መለዋወጥ

የታወቀ እንቆቅልሽ እነሆ። a "tea" ነው፤ b ደግሞ "coffee" ነው። ቦታቸውን መለዋወጥ እንፈልጋለን። ይህ ኮድ ትክክል ይመስላል። ግን መስመር በመስመር እንከተለውና "tea" ላይ ምን እንደሚደርስ እንመልከት።

የማይሰራ የቦታ መለዋወጥ

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

a = "tea"
b = "coffee"
a = b
b = a
print(a, b)
Names and their values after line 1
NameValue after line 1
a'tea'new
bnot made yet

Output so far

Step 1 of 5

Step 1 of 5. Line 1: a = "tea". a is now 'tea'.

ከመስመር 3 በኋላ "tea"ን የሚያመለክት አንድም ስም የለም። ስለዚህ መስመር 4 መልሶ ሊያመጣው አይችልም። መፍትሄው ሦስተኛ ስም ነው፤ እሱ መጀመሪያ "tea"ን ይዞ ያቆይልናል፦

a = "tea"
b = "coffee"
temp = a
a = b
b = temp
print(a, b)

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

Python አጭር መንገድም አለው፦ a, b = b, a። ይህንን በክፍል 4 በደንብ እንረዳዋለን።

ስም የማውጣት ደንቦች

ስም ፊደሎችን፣ አሃዞችን እና የታች ሰረዝን (_) ሊይዝ ይችላል። ግን በአሃዝ መጀመር አይችልም። እንደ if ወይም from ያለ የPython ቁልፍ ቃል (keyword) መሆንም አይችልም። ትልቅና ትንሽ ፊደል ይለያያሉ፦ price እና Price ሁለት የተለያዩ ስሞች ናቸው። በPython የተለመደው አጻጻፍ በትንንሽ ፊደሎች የተጻፉ ቃላትን በታች ሰረዝ ማገናኘት ነው፤ ለምሳሌ taxi_fare ወይም price_per_cup። እሴቱ ምን ማለት እንደሆነ የሚናገሩ ስሞችን እንምረጥ። Python ሁለቱንም ቢቀበልም fare ከx ይሻላል።

ስሙ ሁልጊዜ ከ= በግራ በኩል ይቀመጣል፤ እሴቱ ደግሞ በቀኝ በኩል፦

በስም ላይ የሚፈጠር የፊደል ግድፈት ከሁሉም በላይ የተለመደ ስህተት (error) ነው። Python ማግኘት የሚችለው ቀድመን እሴት የሰጠነውን ስም ብቻ ነው፦

መልመጃ

ለታክሲ ጉዞ ስሞች ስጡ

ለአንድ ጉዞ መነሻ፣ መድረሻ እና የክፍያ ዋጋ ስሞችን ስጡ። ክፍያው መጀመሪያ 250 ነው። ከዚያ ሾፌሩ 300 ይጠይቃል፤ ስለዚህ ለክፍያው አዲሱን እሴት ስጡት። በመጨረሻም ሦስቱንም ስሞች የሚጠቀም አንድ ዓረፍተ ነገር አሳዩ። (የመጀመሪያውን ስም from ልትሉት አትችሉም፤ ያ ቃል በPython ውስጥ ቀድሞውኑ ትርጉም አለው። start ሞክሩ።)

Output
From Bole to Piassa costs 300 birr

Your code

# ለጉዞው ስሞች፣ ከዚያ አዲሱ ክፍያ፣ ከዚያ አንድ print

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.

start = "Bole"
destination = "Piassa"
fare = 250
fare = 300
print("From", start, "to", destination, "costs", fare, "birr")

ዋና ዋና ነጥቦች

  • ስም (variable) አንድን እሴት የሚያመለክት ስም ነው። =ን «ያገኛል» ብለን እናነባለን፦ price = 250 ማለት «price 250ን ያገኛል» ማለት ነው።
  • አንድ ስም በአንድ ጊዜ አንድ እሴት ብቻ ያመለክታል። አዲስ እሴት ስንሰጠው አሮጌውን ይተካል፤ ምንም ነገር አይደመርም ወይም አይቀመጥም።
  • Python መጀመሪያ የ=ን ቀኝ በኩል ያሰላል፤ ስለዚህ count = count + 1 የተለመደ ነው።
  • total = price * 2 የሚሰላው አንድ ጊዜ ብቻ ነው። በኋላ priceን መቀየር totalን አይቀይርም።
  • ስሞች ፊደሎችን፣ አሃዞችን እና የታች ሰረዝን ይጠቀማሉ፤ በአሃዝ መጀመር አይችሉም፤ ትልቅና ትንሽ ፊደልንም ይለያሉ።