ስሞች (variables)
እስካሁን በፕሮግራሞቻችን ውስጥ ያለ እያንዳንዱ እሴት (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.Each row is one step: the line that just ran, and every name's value after it.
| Name | Value after line 1 |
|---|---|
| price | 250new |
Output so far
Step 1 of 4
Step 1 of 4. Line 1: price = 250. price is now 250.
| Step | Line | price | Printed |
|---|---|---|---|
| 1 | 1 | 250 | |
| 2 | 2 | 250 | 250 |
| 3 | 3 | 300 | |
| 4 | 4 | 300 | 300 |
አሁን ራሳችሁ አስኪዱት (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)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.Each row is one step: the line that just ran, and every name's value after it.
| Name | Value after line 1 |
|---|---|
| count | 5new |
Output so far
Step 1 of 3
Step 1 of 3. Line 1: count = 5. count is now 5.
| Step | Line | count | Printed |
|---|---|---|---|
| 1 | 1 | 5 | |
| 2 | 2 | 6 | |
| 3 | 3 | 6 | 6 |
አንድ ተጨማሪ ወጥመድ አለ። total = price * 2 እሴቱን የሚያሰላው አንድ ጊዜ ብቻ ነው፤ በዚያው ቅጽበት። totalን ሁልጊዜ ወቅታዊ የሚያደርግ ደንብ አያዘጋጅም። የዚህኛውን ውጤት ገምቱ።
ውጤቱን ገምቱ
Decide before you look. Guessing wrong is how this sticks.
price = 250
total = price * 2
price = 300
print(total)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.Each row is one step: the line that just ran, and every name's value after it.
| Name | Value after line 1 |
|---|---|
| a | 'tea'new |
| b | not made yet |
Output so far
Step 1 of 5
Step 1 of 5. Line 1: a = "tea". a is now 'tea'.
| Step | Line | a | b | Printed |
|---|---|---|---|---|
| 1 | 1 | 'tea' | not made yet | |
| 2 | 2 | 'tea' | 'coffee' | |
| 3 | 3 | 'coffee' | 'coffee' | |
| 4 | 4 | 'coffee' | 'coffee' | |
| 5 | 5 | 'coffee' | 'coffee' | coffee coffee |
ከመስመር 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 ሞክሩ።)
From Bole to Piassa costs 300 birrYour code
# ለጉዞው ስሞች፣ ከዚያ አዲሱ ክፍያ፣ ከዚያ አንድ printIn 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.
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ን አይቀይርም።- ስሞች ፊደሎችን፣ አሃዞችን እና የታች ሰረዝን ይጠቀማሉ፤ በአሃዝ መጀመር አይችሉም፤ ትልቅና ትንሽ ፊደልንም ይለያሉ።