പൈത്തണിന്റെ ലോകത്തേക്ക് വായനക്കാര്‍ക്ക് സുസ്വാഗതം. പൈത്തണ്‍ എന്ന പ്രോഗ്രാമിങ്ങ് ലാങ്ഗ്വേജ് പഠിപ്പിക്കാനുള്ള ശ്രമമാണിവിടെ. ആരംഭം മുതലുള്ള പോസ്റ്റുകളുടെ ലിങ്കുകള്‍ ഇടതു വശത്തു കാണാം. ആര്‍ക്കും പഠിക്കാം. ആര്‍ക്കും സംശയങ്ങള്‍ ചോദിക്കാം. വിലക്കുകളോ മോഡറേഷനുകളോ ഇല്ല.

പൈത്തണ്‍: പാഠം നാല്

>> Monday, July 19, 2010

കഴിഞ്ഞ പാഠത്തില്‍ നാം കണ്ട ശരാശരി പ്രോഗ്രാം എങ്ങനെയാണ് പ്രവര്‍ത്തിക്കുന്നതെന്ന് നമുക്കു നോക്കാം. പ്രോഗ്രാമിന്റെ കമന്റല്ലാത്ത ആദ്യത്തെ വരി താഴെ എഴുതുന്നു:



ഈ വരിയില്‍ മൂന്നു കാര്യങ്ങളാണുള്ളത്:

  1. num_12 എന്ന വേരിയബിള്‍ (variable) അഥവാ ചരം.
  2. = എന്ന സംകാരകം (operator).
  3. input() എന്ന, ഡേറ്റ സ്വീകരിക്കാനുള്ള ഉപാധി.

ഇവയോരോന്നും എന്താണെന്നു നോക്കാം.

input()

പ്രോഗ്രാമിലേക്ക് പുറത്തുനിന്ന് ഡേറ്റ എത്തിക്കാനുള്ള ഒരു മാര്‍ഗമാണ് input(). കൃത്യമായി പറഞ്ഞാല്‍, ടെര്‍മിനല്‍ ഉപയോഗിച്ച് പ്രോഗ്രാം പ്രവര്‍ത്തിപ്പിക്കുന്ന ആളിനോട് ഒരു ചോദ്യം ചോദിച്ച്, ആ ചോദ്യത്തിനുകിട്ടുന്ന ഉത്തരം പ്രോഗ്രാമിലേക്ക് എത്തിക്കുക എന്നതാണ് input() ചെയ്യുന്നത്. ഉപയോക്താവിനോട് ചോദിക്കേണ്ട ചോദ്യം input എന്നതിനു ശേഷം ബ്രായ്ക്കറ്റുകള്‍ക്കുള്ളിലായി ഒരു string ആയി കൊടുക്കണം — ഉദ്ധരണചിഹ്നങ്ങള്‍ക്കിടയിലായി (ഉദാ: "How many 12 year old students in the group? " ) കൊടുക്കണമെന്നര്‍ത്ഥം. input() പ്രവര്‍ത്തിക്കുമ്പോള്‍ ഇങ്ങനെ കൊടുത്ത string-നെ അത് ടെര്‍മിനലില്‍ അഥവാ ഷെല്ലില്‍ പ്രിന്റ് ചെയ്യുകയും, ഉപയോക്താവ് തരുന്ന ഉത്തരത്തിനായി കാത്തുനില്‍ക്കുകയും ചെയ്യും. പ്രോഗ്രാം പ്രവര്‍ത്തിപ്പിക്കുന്ന ആള്‍ എന്തെങ്കിലുമൊക്കെ എഴുതി Enter അമര്‍ത്തുമ്പോള്‍, Enter-നു മുമ്പുവരെ എഴുതിയ കാര്യങ്ങള്‍ വായിച്ചെടുത്ത് input() അത് പ്രോഗ്രാമിലേക്കെത്തിക്കുന്നു.

നമ്മുടെ പ്രോഗ്രാമില്‍ input() ഉപയോഗിച്ച് വായിച്ചെടുത്തതെല്ലാം സംഖ്യകളാണല്ലോ? സംഖ്യകളല്ലാതെ പേരുകളും മറ്റും പ്രോഗ്രാമിലേക്ക് input() ഉപയോഗിച്ച് വായിച്ചെടുക്കാന്‍ ശ്രമിച്ചാല്‍ പൈത്തണ്‍ പരാതി പറയുന്നതുകാണാം. ഈ പരാതിക്കു കാരണമെന്താണെന്ന് നമുക്കു വഴിയേ കാണാം. പരാതി പരിഹരിക്കാനായി താഴെപ്പറയുന്നതില്‍ ഏതെങ്കിലും ചെയ്യുക:
  • പേരുകള്‍, വാചകങ്ങള്‍ മുതലായ string-കള്‍ ഇന്‍പുട്ട് ആയി കൊടുക്കുമ്പോള്‍ (അതായത്, ടെര്‍മിനലില്‍, input() -ന്റെ കാത്തുനില്‍പ്പ് അവസാനിപ്പിക്കാനായി കൊടുക്കുമ്പോള്‍) അവയെ ഉദ്ധരണചിഹ്നങ്ങള്‍ക്കുള്ളിലാക്കി, string ആയിത്തന്നെ കൊടുക്കുക. അതായത്, വെറുതെ Philip എന്ന് കൊടുക്കുന്നതിനുപകരം "Philip" എന്നു കൊടുക്കുക. അല്ലെങ്കില്‍
  • പ്രോഗ്രാമില്‍ input() എന്നതിനുപകരം raw_input() ഉപയോഗിക്കുക. ഇങ്ങനെയാണെങ്കില്‍ പ്രോഗ്രാം പ്രവര്‍ത്തിക്കുന്ന സമയത്ത് string-കള്‍ ഇന്‍പുട്ടായി കൊടുക്കുമ്പോള്‍ " " എന്നതിനുള്ളിലായി കൊടുക്കണമെന്നില്ല.

നമ്മുടെ ആദ്യത്തെ പ്രോഗ്രാം ഓര്‍മ്മയില്ലേ? "Hello, World!" എന്ന് എഴുതുന്ന പ്രോഗ്രാമായിരുന്നു അത്. input() എന്ന ഇന്‍പുട്ട് എടുക്കുന്ന ഉപാധിയെപ്പറ്റി മനസ്സിലാക്കിയ സ്ഥിതിക്ക് നമുക്ക് ഈ പ്രോഗ്രാമിനെ ഒന്ന് മെച്ചപ്പെടുത്താം:

ഒരു പ്രവര്‍ത്തനം

പ്രവ. 1.
ഉപയോക്താവിനോട് പേരു ചോദിക്കുകയും, പേരു കിട്ടിക്കഴിഞ്ഞാല്‍ ആ പേരുവച്ച് ഹലോ പറയുകയും ചെയ്യുന്ന ഒരു പ്രോഗ്രാം എഴുതുക.

പ്രോഗ്രാമിന്റെ പ്രവര്‍ത്തനഫലം താഴെക്കാണുന്ന ചിത്രത്തിലേതുപോലെ ആയിരിക്കണം. ചിത്രത്തില്‍ പ്രോഗ്രാം മൂന്നു പ്രാവശ്യം പ്രവര്‍ത്തിപ്പിച്ചിട്ടുണ്ട് (മൂന്നു പ്രാവശ്യം പ്രോഗ്രാം ഉള്ള വിന്‍ഡോയില്‍ F5 അമര്‍ത്തിയിട്ടുണ്ട്). പ്രോഗ്രാമിന്റെ ഔട്പുട്ട് നീലയിലും ഞാന്‍ പ്രോഗ്രാമിന് ഇന്‍പുട്ട് ആയി കൊടുത്ത കാര്യങ്ങള്‍ കറുപ്പിലുമായി കാണിച്ചിരിക്കുന്നു.


num_12

num_12 എന്നത് ഒരു ചരം (variable - വേരിയബിള്‍) ആണ്. ലളിതമായിപ്പറഞ്ഞാല്‍ മൂല്യങ്ങളെ (values) സൂക്ഷിച്ചുവെക്കാനുള്ള പേരെഴുതിയ പെട്ടികളാണ് ചരങ്ങള്‍. ഒരു പ്രോഗ്രാമിന്റെ പ്രവര്‍ത്തനത്തിന്റെ ഭാഗമായി സാധാരണഗതിയില്‍ കുറെയേറെ വിലകള്‍ അഥവാ മൂല്യങ്ങള്‍ ഉപയോഗിക്കേണ്ടതായിവരും. പ്രോഗ്രാമിനുപുറത്തുനിന്ന് (ഉദാ: input() വഴിയായി) കിട്ടുന്ന ഡേറ്റയും, പ്രോഗ്രാം പ്രവര്‍ത്തിപ്പിക്കുമ്പോളുണ്ടാകുന്ന മറ്റു മൂല്യങ്ങളും ഇതില്‍ ഉള്‍പ്പെടും. ഇവയില്‍ ചിലതിനെയൊക്കെ നമുക്ക് പേരിട്ടു വിളിക്കേണ്ട ആവശ്യവുമുണ്ടാകും. ഇങ്ങനെ വിലകളെ പേരിട്ടു വിളിക്കാനുള്ള ഉപാധിയാണ് ചരങ്ങള്‍.

പ്രോഗ്രാമിംഗില്‍ ചരങ്ങള്‍ക്ക് വളരെയേറെ പ്രാധാന്യമുണ്ട്. പ്രോഗ്രാമുകള്‍ ശരിയായി എഴുതാന്‍ ചരങ്ങള്‍ എന്താണെന്ന് കൃത്യമായി മനസ്സിലാക്കുകയും അവയെ ശരിയായി ഉപയോഗിക്കുവാന്‍ അറിയുകയും വേണം. ചരങ്ങളുടെ പിന്നിലുള്ള ആശയം ലളിതമായതുകൊണ്ട് ഇതത്ര പ്രയാസമുള്ള കാര്യമൊന്നുമല്ല. ചരങ്ങളുടെ ഉപയോഗത്തില്‍ വളരെ പ്രാധാന്യമുള്ള = എന്ന സംകാരകത്തിനെ പരിചയപ്പെട്ടതിനുശേഷം ചരങ്ങളെപ്പറ്റി നമുക്ക് വിശദമായി ഈ പാഠത്തില്‍ത്തന്നെ പഠിക്കാം.

= എന്ന സംകാരകം (operator)


നമ്മുടെ ശരാശരി പ്രോഗ്രാമിന്റെ ആദ്യത്തെ വരി ഒരിക്കല്‍ക്കൂടി എടുത്തെഴുതുന്നു:



ഇതില്‍ num_12, input() എന്നിവയെ ബന്ധിപ്പിക്കുന്ന = എന്ന ചിഹ്നം ചെയ്യുന്നത് വലതുവശത്തുള്ള input() എന്നതിന്റെ വില (മൂല്യം) എടുത്ത് ഇടതുവശത്തുള്ള num_12 എന്ന ചരത്തിന് കൊടുക്കുക എന്നതാണ്. അതായത്, = എന്നത് ഒരു "വിലകൊടുക്കല്‍ സംകാരകം" (assignment operator എന്ന് ഇംഗ്ളീഷില്‍) യാണ്. ഗണിത സമവാക്യങ്ങളില്‍ ഉപയോഗിക്കുന്നതുപോലെ തുല്യത കാണിക്കുന്നതിനുവേണ്ടി അല്ല = എന്നത് പൈത്തണില്‍ ഉപയോഗിക്കുന്നത് എന്നത് പ്രത്യേകം ശ്രദ്ധിക്കേണ്ട കാര്യമാണ് . ഉദാഹരണത്തിന്, ഗണിതത്തില്‍ വെറും പൊട്ടത്തെറ്റായ x = x + 1 എന്നത് പൈത്തണില്‍ സാധുതയുള്ള പ്രസ്താവമാണ്!

ഇതെങ്ങനെയാണ് ശരിയാകുന്നത് എന്നുകാണാന്‍ = എന്ന് പ്രോഗ്രാമില്‍ കാണുന്നിടത്ത് അതിനുപകരം ആണ് എന്ന് സങ്കല്‍പ്പിക്കുക. അപ്പോള്‍ x = x + 1 എന്നത് x x + 1 എന്നാകും (സങ്കല്‍പ്പത്തില്‍). ഇതിനെ വായിക്കേണ്ടത് ഇങ്ങനെയാണ്: " -ന്റെ വലതുവശത്തുകാണുന്ന വ്യഞ്ജകത്തിന്റെ (expression) വില കണ്ടുപിടിച്ച് അത് -ന്റെ ഇടതുവശത്തുകാണുന്ന ചരത്തിന് കൊടുക്കുക." ഇങ്ങനെയാകുമ്പോള്‍ x x + 1 എന്നതിന്റെ അര്‍ത്ഥം ഇനിപ്പറയുന്നതാണ്: "x എന്ന ചരത്തിന്റെ ഇനിയുള്ള വില എന്നത് x-ന് മുമ്പുണ്ടായിരുന്ന വിലയുടെ കൂടെ 1 കൂട്ടിയാല്‍ കിട്ടുന്ന മൂല്യമാണ്". ഇതുതന്നെയാണ് x = x + 1 എന്നു പറയുമ്പോള്‍ സംഭവിക്കുന്നതും. ഇതു നമുക്കൊന്ന് പരീക്ഷിച്ചുനോക്കാം. ഇതിനായി IDLE-ലെ പൈത്തണ്‍ ഷെല്ലില്‍ പോകുക (ടെര്‍മിനലില്‍ പൈത്തണ്‍ ഷെല്‍ തുറന്നാലും മതി). താഴെക്കാണുന്നവ പരീക്ഷിക്കുക:
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 5
>>> x
5
>>> x = x + 1
>>> x
6
>>> 
ഇവിടെ സംഭവിക്കുന്നത്:
  1. x എന്ന ചരത്തിന് 5 എന്ന വില കൊടുക്കാന്‍ x = 5 എന്ന് കൊടുത്ത് Enter അമര്‍ത്തുന്നു.
  2. x-ന്റെ വില കാണാന്‍ വെറുതെ x എന്ന് കൊടുത്ത് Enter അമര്‍ത്തുന്നു. ഷെല്ലിലായതുകൊണ്ടാണ് ഇത് മതിയാകുന്നത്. ഫയലിലെഴുതിയ പ്രോഗ്രാമിലാണെങ്കില്‍ print x എന്ന് എഴുതണം.
  3. x-ന്റെ വില ഒന്നു കൂട്ടാന്‍ x = x + 1 എന്ന് കൊടുക്കുന്നു.
  4. x-ന്റെ വില മാറിയോ എന്നു കാണാന്‍ വീണ്ടും x എന്ന് കൊടുക്കുന്നു.

ഇതുതന്നെ ഒരു ചെറിയ പ്രോഗ്രാമാക്കി എഴുതിയാല്‍ ഇതുപോലെയിരിക്കും:



ഇത്തരം ചെറിയ കാര്യങ്ങള്‍ ചെയ്തുനോക്കാന്‍ ഷെല്‍ തന്നെയാണ് സൗകര്യം.

പ്രോഗ്രാമില്‍ കാണുന്ന = എന്ന ചിഹ്നത്തിന് ഗണിതത്തില്‍ കാണുന്ന = എന്ന ചിഹ്നത്തിന്റെ അതേ അര്‍ത്ഥം അല്ല എന്ന ബോധം ഉറയ്ക്കാന്‍വേണ്ടി കുറേക്കാലത്തേക്കെങ്കിലും പ്രോഗ്രാമില്‍ = എന്ന് കാണുന്നിടത്തെല്ലാം എന്ന ചിഹ്നം മനസ്സില്‍ക്കാണുക .


പ്രവര്‍ത്തനങ്ങള്‍

(എല്ലാം ഷെല്ലില്‍ (IDLE-ലോ ടെര്‍മിനലിലോ) ചെയ്യേണ്ടവ.)
പ്രവ. 2.
മുകളില്‍പ്പറഞ്ഞ കാര്യങ്ങള്‍ ഷെല്ലില്‍ ചെയ്യുക. അതിനു തുടര്‍ച്ചയായി x-ന്റെ വില ഇരട്ടിപ്പിക്കുക: x-ന്റെ വിലയെ രണ്ടുകൊണ്ട് ഗുണിച്ച് x-ലേക്കുതന്നെ കൊടുക്കുക. ഇതുകഴിഞ്ഞുള്ള x-ന്റെ വില കാണുക, ഇരട്ടിച്ചു എന്ന് ഉറപ്പുവരുത്തുക.
പ്രവ. 3.
y എന്ന ചരത്തിന് 10 എന്ന വില കൊടുക്കുക. z എന്ന ചരത്തിന് x, y എന്നിവയുടെ തുക വിലയായി കൊടുക്കുക. z-ന്റെ വില കാണുക.
പ്രവ. 4.
a എന്ന ചരത്തിന് "silsila " എന്ന വില കൊടുക്കുക. b എന്ന ചരത്തിന് "hai " എന്ന വില കൊടുക്കുക (ഉദ്ധരണചിഹ്നങ്ങളും സ്പേസും ശ്രദ്ധിക്കുക). c എന്ന ചരത്തിന് a + b + a എന്ന വില കൊടുക്കുക. ഇപ്പോള്‍ c-യുടെ വില എന്താണ്?
പ്രവ. 5.
c-യുടെ വില ഇരട്ടിപ്പിക്കുക: c-യുടെ വിലയെ രണ്ടുകൊണ്ട് ഗുണിച്ച് (അതെ!) c-ലേക്കുതന്നെ കൊടുക്കുക. ഇതുകഴിഞ്ഞുള്ള c-യുടെ വില കാണുക.


ശരാശരി പ്രോഗ്രാമിന്റെ വിവരണം

കഴിഞ്ഞ പാഠത്തിലെ ശരാശരി കണ്ടുപിടിക്കുന്ന പ്രോഗ്രാം മനസ്സിലാക്കാനുള്ളതെല്ലാം നാം പഠിച്ചുകഴിഞ്ഞു. പ്രോഗ്രാം എടുത്തെഴുതുന്നു.



പ്രോഗ്രാമിന്റെ ആദ്യത്തെ ഏഴു വരികള്‍ കമന്റുകളും പിന്നെയുള്ള രണ്ടു വരികള്‍ ശൂന്യവുമാണല്ലോ. പത്തു മുതല്‍ പതിനെട്ടു വരെ വരികളില്‍ ചെയ്യുന്നത് ഉപയോക്താവിന്റെ പക്കല്‍നിന്ന് അഞ്ച് വിലകള്‍ (ഇവ പൂര്‍ണ്ണ സംഖ്യകളാണെന്നാണ് സങ്കല്‍പം) വാങ്ങി അഞ്ച് ചരങ്ങളിലേക്ക് ( num_12, num_13, num_14, num_15, num_16 ) സൂക്ഷിച്ചു വെക്കുക (store) എന്നതാണ്. ഇതിനായി നാം മുകളില്‍ വിവരിച്ച രീതിയില്‍ input(), = എന്നിവ ഉപയോഗിച്ചിരിക്കുന്നു.

ഇരുപതാം വരിയില്‍ ചെയ്യുന്നത് total_num എന്ന ചരത്തിലേക്ക് മറ്റ് അഞ്ച് ചരങ്ങളുടേയും തുക (ഇത് കുട്ടികളുടെ എണ്ണമാണ്) സൂക്ഷിച്ചുവെക്കുക എന്നതാണ്. ഇരുപത്തിരണ്ടാം വരിയിലാകട്ടെ കുട്ടികളുടെ വയസുകളുടെയെല്ലാം തുക total_age എന്ന ചരത്തിലേക്ക് സൂക്ഷിച്ചുവെക്കുന്നു. ഇതിയായി = ചിഹ്നത്തിന്റെ വലതുഭാഗത്ത് ഈ തുക തരുന്ന ഒരു വ്യഞ്ജകം (expression) എഴുതിയിരിക്കുന്നു. ഇവിടെ വലത്തേക്ക് നീണ്ടുപോകുമായിരുന്ന വ്യഞ്ജകത്തെ \ എന്ന ചിഹ്നത്തിന്റെ സഹായത്തോടെ രണ്ടു വരികളിലാക്കിയിരിക്കുന്നത് ശ്രദ്ധിക്കുക: പ്രോഗ്രാം കാണുമ്പോഴുള്ള ഭംഗിക്കുവേണ്ടിയും വായിക്കാനുള്ള സൗകര്യത്തിനുവേണ്ടിയും മാത്രമാണ് ഇങ്ങനെ ചെയ്യുന്നത്. \ ഒഴിവാക്കി ഒരേ വരിയില്‍ വ്യഞ്ജകം മുഴുവന്‍ എഴുതിയാലും പ്രോഗ്രാം ഒരു വ്യത്യാസവുമില്ലാതെ പ്രവര്‍ത്തിച്ചുകൊള്ളും (ഇങ്ങനെയാക്കി നോക്കൂ).

ഇരുപത്തിയഞ്ചാം വരിയില്‍ total_age എന്ന ചരത്തിന്റെ വിലയെ total_num എന്ന ചരത്തിന്റെ വിലകൊണ്ട് ഹരിച്ചുകിട്ടുന്ന ഫലത്തെ average എന്ന ചരത്തിലേക്ക് സൂക്ഷിച്ചു വെക്കുന്നു. പ്രോഗ്രാമിലെ അവസാനത്തെ വരിയില്‍ ഇങ്ങനെ കിട്ടിയ ശരാശരി ഒരു വാചകത്തിന്റെ ഒടുവിലായി പുറത്തേക്കെഴുതുമ്പോള്‍ പ്രോഗ്രാം വിജയകരമായി പൂര്‍ത്തിയാകുന്നു.

ചരങ്ങള്‍

മൂല്യങ്ങളെ (values) പേരിട്ടു വിളിക്കാനായി പ്രോഗ്രാമില്‍ ചരങ്ങള്‍ (variables) ഉപയോഗിക്കുന്നത് നാം കണ്ടു. ഇനി നമുക്ക് ചരങ്ങളെപ്പറ്റി കുറച്ചുകൂടി വിശദമായി പഠിക്കാം. ചരങ്ങളുടെ പിന്നിലെ ആശയം മനസ്സിലാക്കാന്‍ എളുപ്പമുള്ളതാണ്. ഇതു ശരിയായി മനസ്സിലാക്കാതിരുന്നാലോ, പ്രോഗ്രാമെഴുത്ത് ദുഷ്കരമാകുകയും ചെയ്യും.

ഒരു ചരത്തിന് രണ്ട് ഭാഗങ്ങളുണ്ട് — പേരും, മൂല്യവും:

ചരത്തിന്റെ പേര് (name അല്ലെങ്കില്‍ label)
ശരാശരി കാണാനുള്ള പ്രോഗ്രാമില്‍ നാമുപയോഗിച്ച് ചരങ്ങളുടെ പേരുകള്‍ num_12, num_13, num_14, num_15, num_16, total_num, total_age, average എന്നിവയാണ്. ചരങ്ങള്‍ക്ക് പേരുകൊടുക്കുമ്പോള്‍ പാലിക്കേണ്ട ചില നിയമങ്ങളുണ്ട്. അവ ഇവിടെ ചുരുക്കി പറയുന്നു:
  1. പേരുകള്‍ക്ക് എത്രവേണമെങ്കിലും നീളം ആകാം.
  2. പേരിന്റെ ആദ്യത്തെ അക്ഷരം ഇംഗ്ളീഷ് അക്ഷരമാലയിലെ ഏതെങ്കിലും അക്ഷരം (ചെറിയതോ വലിയതോ) അല്ലെങ്കില്‍ "_"-ഓ (underscore) ആയിരിക്കണം.
  3. പേരിന്റെ രണ്ടാമത്തേതും തുടര്‍ന്നുമുള്ള സ്ഥാനങ്ങളില്‍ മേല്‍പ്പറഞ്ഞ അക്ഷരങ്ങളും "_"-ഉം കൂടാതെ അക്കങ്ങളും ആകാം.
  4. പേരുകളില്‍ വലിയക്ഷരവും ചെറിയക്ഷരവും (capital and small letters) തമ്മില്‍ വ്യത്യാസമുണ്ട്. ഉദാ: average, Average എന്നിവ രണ്ടു വ്യത്യസ്ത ചരങ്ങളാണ്; ഒന്നിനു പകരം മറ്റേത് ഉപയോഗിച്ചാല്‍ പ്രോഗ്രാം തെറ്റിപ്പോകും.
  5. താഴെക്കാണുന്ന പേരുകള്‍ വിലക്കപ്പെട്ടവയാണ്. ഇവ ചരങ്ങളുടെ പേരുകളായി ഉപയോഗിച്ചുകൂടാ . ഇതിനുകാരണം ഇവയ്ക്ക് പൈത്തണ്‍ ഭാഷയില്‍ പ്രത്യേക അര്‍ത്ഥങ്ങള്‍ ഉണ്ട് എന്നതാണ്. ഇവയെ കീവേഡുകള്‍ (keywords) – പ്രത്യേകവാക്കുകള്‍/പ്രധാനവാക്കുകള്‍ – എന്നു വിളിക്കുന്നു.
    and       del       from      not       while
    as        elif      global    or        with
    assert    else      if        pass      yield
    break     except    import    print
    class     exec      in        raise
    continue  finally   is        return
    def       for       lambda    try
    
ഇത്രയുമൊക്കെയാണ് ചരങ്ങളുടെ പേരിടുമ്പോള്‍ പാലിക്കേണ്ട നിയമങ്ങള്‍. പ്രോഗ്രാമെഴുത്തും വായനയും എളുപ്പമുളളതാക്കാന്‍ നാം ശ്രദ്ധിക്കേണ്ട ഒന്നു രണ്ടു കാര്യങ്ങള്‍ ഇവയാണ്:
  1. "_" പേരിന്റെ തുടക്കത്തില്‍ അനുവദനീയമാണെങ്കിലും തുടക്കക്കാരായ നമ്മള്‍ ഈ സൗകര്യം ഉപയോഗിക്കാതെയിരിക്കുന്നതാണ് നല്ലത്. പേരിന്റെ തുടക്കത്തിലെ "_" വിട്ടുപോകാനും കാണാതെയിരിക്കാനും നല്ല സാധ്യതയുള്ളതുകൊണ്ടാണ് ഇങ്ങനെ പറഞ്ഞത്.
  2. മേല്‍ക്കൊടുത്ത നിയമങ്ങളനുസരിക്കുന്ന ഏതു പേരും ചരങ്ങള്‍ക്കിടാമെങ്കിലും ചരത്തിനെ എന്ത് സൂചിപ്പിക്കാനാണോ പ്രോഗ്രാമില്‍ ഉപയോഗിക്കുന്നത്, ആ അര്‍ത്ഥം വരുന്ന പേരുകള്‍ ഇടുന്നതാണ് നല്ലത്. ഇത് പ്രോഗ്രാം വായന സുകരമാക്കും. ശരാശരി കാണാനുള്ള നമ്മുടെ പ്രോഗ്രാമില്‍ ഉപയോഗിച്ചിരിക്കുന്ന ചരങ്ങളുടെ പേരുകള്‍ ശ്രദ്ധിക്കുക.
  3. ഒറ്റനോട്ടത്തില്‍ ഒന്നാണെന്ന് തോന്നിക്കുന്ന പേരുകള്‍ കൊടുക്കാതെയിരിക്കുക. average, Average എന്നീ രണ്ടു പേരുകളും ഒരേ പ്രോഗ്രാമില്‍ ഉപയോഗിച്ചാല്‍ ചിന്താക്കുഴപ്പവും അതുമൂലമുള്ള തെറ്റുകളും വരാന്‍ കാരണം വേറെയൊന്നും വേണ്ട.

ചരത്തിന്റെ മൂല്യം (value)
ഒരു ചരത്തിന് പ്രോഗ്രാമിലെ ആവശ്യമനുസരിച്ച് പല തരത്തിലുള്ള — സംഖ്യ, string, മുതലായ — വിലകള്‍ ആകാം. ചരങ്ങളെപ്പറ്റി ചിന്തിക്കാനുള്ള എളുപ്പവഴി അവയെ വിലകള്‍ സൂക്ഷിക്കാനുള്ള കള്ളികളായി (cells) സങ്കല്‍പ്പിക്കുക എന്നതാണ്. ഇതനുസരിച്ച് നമ്മുടെ പ്രോഗ്രാമിലെ പത്താമത്തെ വരി പ്രവര്‍ത്തിക്കുന്നതിനുമുമ്പ് num_12 എന്ന ചരം ഇങ്ങനെയിരിക്കും:
ചരത്തിന്റെ വില (value) സൂക്ഷിക്കുന്ന ഭാഗത്ത് ഒന്നുമില്ല എന്നത് ശ്രദ്ധിക്കുക. പ്രോഗ്രാമിലെ പത്താമത്തെ വരി പ്രവര്‍ത്തിക്കുമ്പോഴുണ്ടാകുന്ന ചോദ്യത്തിന് ഉത്തരമായി നിങ്ങള്‍ 10 എന്ന സംഖ്യ കൊടുത്ത് Enter അമര്‍ത്തി എന്ന് കരുതുക. അപ്പോള്‍ ഇതേ ചരത്തിന്റെ അവസ്ഥ ഇങ്ങനെയായി മാറും:
പ്രോഗ്രാം പതിനെട്ടാമത്തെ വരി വരെ പ്രവര്‍ത്തിച്ചുകഴിയുമ്പോള്‍ ചരങ്ങളുടെ അവസ്ഥ (ഈ സംഖ്യകളൊക്കെ ഇന്‍പുട്ട് ആയി കിട്ടിയാല്‍):
ഇരുപതാമത്തെ വരി കഴിയുമ്പോള്‍:
ഇങ്ങനെ തുടര്‍ന്ന്, പ്രോഗ്രാമിന്റെ അവസാനമാകുമ്പോഴേക്കും:

ചരങ്ങളും = -ഉം ഉള്‍പ്പെടുന്ന ഒരു പൈത്തണ്‍ വരി വായിക്കേണ്ട രീതി:
  • = -ന് വലതുവശത്ത് (ഒറ്റയ്കോ ഒരു വ്യഞ്ജകത്തിന്റെ ഭാഗമായോ) കാണുന്ന ചരങ്ങള്‍ താന്താങ്ങളുടെ വിലകളെ ആണ് സൂചിപ്പിക്കുന്നത്. അതുകൊണ്ട് ഇങ്ങനെയുള്ള ഓരോ ചരത്തിനും പകരമായി അതിന്റെ ഇപ്പോഴത്തെ വില അതേ സ്ഥാനത്ത് സങ്കല്‍പ്പിക്കുക.
  • = -ന്റെ ഇടതുവശത്ത് ഒരേ ഒരു ചരമേ ആകാവൂ. ഒന്നിലധികം ചരങ്ങളുള്ള വ്യഞ്ജകങ്ങള്‍ പാടില്ല (ഇതിന് അപവാദങ്ങളുണ്ട്, വഴിയേ കാണാം). = -ന്റെ ഇടതുവശത്ത് കാണുന്ന ചരം അതിന്റെ വിലയെ അല്ല സൂചിപ്പിക്കുന്നത്, മറിച്ച് അതിന്റെ കള്ളിയെ (cell, location) ആണ്. ഈ കള്ളിയിലേക്ക് = -ന്റെ വലതുവശത്തുള്ള വ്യഞ്ജകത്തിന്റെ വില എഴുതുന്നതായി സങ്കല്‍പ്പിക്കുക.

x എന്ന ഒരു ചരത്തിന്റെ വില പല തരത്തില്‍ മാറ്റുന്ന ഒരു കൂട്ടം പൈത്തണ്‍ ശകലങ്ങള്‍ ഇതാ. ഓരോ പ്രാവശ്യവും x -ന്റെ വില മാറുമ്പോള്‍ x -ന്റെ വില സൂക്ഷിച്ചിരിക്കുന്ന പേരിട്ട പെട്ടിക്ക് എന്ത് സംഭവിക്കുന്നു എന്ന് കാണിക്കുന്ന ചിത്രങ്ങള്‍ താഴെ. ഈ പെട്ടി കംപ്യൂട്ടറിന്റെ മെമ്മറിയില്‍ (RAM) ആണ് നിലകൊള്ളുന്നത്. ഒരു പ്രോഗ്രാം പ്രവര്‍ത്തിക്കുന്നിടത്തോളം സമയം ആ പ്രോഗ്രാമില്‍ ഉപയോഗിക്കുന്ന ചരങ്ങളുടെ പെട്ടികള്‍ മെമ്മറിയില്‍ കാണും. പ്രോഗ്രാമിന്റെ പ്രവര്‍ത്തനം നിലയ്ക്കുമ്പോള്‍ ഈ പെട്ടികളും അപ്രത്യക്ഷമാവും; അവ ഉപയോഗിച്ച മെമ്മറി മറ്റു പ്രോഗ്രാമുകള്‍ക്ക് ഉപയോഗിക്കാന്‍ വിട്ടുകിട്ടുകയും ചെയ്യും.

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 5
>>> x
5
>>> x = "Maths"
>>> x
'Maths'
>>> x = 2 * x
>>> x
'MathsMaths'
>>> x = x + x
>>> x
'MathsMathsMathsMaths'
>>> x = 10
>>> x
10
>>>

(കൂടുതല്‍ വ്യക്തമായ ചിത്രം കാണാന്‍ ചിത്രത്തില്‍ ക്ളിക്ക് ചെയ്യുക.)


ഒരു പ്രവര്‍ത്തനം

പ്രവ. 6.
പ്രോഗ്രാമില്‍ വിട്ടുപോയ വരികള്‍ പൂരിപ്പിക്കുക
താഴെക്കാണുന്ന പ്രോഗ്രാമില്‍ വിട്ടുപോയ ഭാഗം ( # .......... എന്നു കാണുന്ന ഭാഗത്ത് ) പൂരിപ്പിച്ച് a, b എന്നീ ചരങ്ങളുടെ മൂല്യം പരസ്പരം മാറുന്ന രീതിയില്‍ ആക്കുക. പ്രോഗ്രാമിന്റെ മറ്റുഭാഗങ്ങളില്‍ മാറ്റം വരുത്താതെ വേണം ഇത് ചെയ്യേണ്ടത്.


ഇങ്ങനെ ചെയ്തുകഴിയുമ്പോള്‍ പ്രോഗ്രാം പ്രവര്‍ത്തിക്കുന്നത് ഇതുപോലെയായിരിക്കണം (വ്യക്തമായ ചിത്രത്തിന് ക്‍ളിക്ക് ചെയ്യുക):


ഉത്തരങ്ങളും സംശയങ്ങളും നിര്‍ദ്ദേശങ്ങളും കമന്റായിടുക.

39 comments:

ഹോംസ് July 19, 2010 at 6:49 AM  

കാത്തിരിപ്പിനൊടുവില്‍ മറ്റൊരു രത്നം!
വൈകീട്ട് പരീക്ഷിച്ച് വിവരം അറിയിക്കാം.
(ഇവിടെ വിവാദങ്ങള്‍ നിരോധിച്ചിരിക്കുന്നു)

MURALEEDHARAN.C.R July 19, 2010 at 7:23 AM  

print out ഏടുക്കുന്നതിനുവേണ്ടി pdf format കൂടിയുണ്ടെങ്കില്‍
നന്നായിരുന്നു

ഫിലിപ്പ് July 19, 2010 at 7:43 AM  

മുരളി സാര്‍,

ശ്രീനാഥ് സാറിന്റെ തകര്‍പ്പന്‍ പിഡിഎഫ് തയ്യാറാകുന്നതുവരെ ഉപയോഗിക്കാനായി ഈ പാഠത്തിന്റെ (അത്ര നല്ലതല്ലാത്ത ) പിഡിഎഫ് ഇവിടെ.

ഗീതാസുധി July 19, 2010 at 7:46 AM  

ഒറ്റ നോട്ടത്തില്‍ ഗംഭീരം!
വിശദമായി പഠിക്കാനുള്ള സാവകാശം കിട്ടിയിട്ട് പ്രതികരിക്കാം.
അവസാനം, ഇതൊരു പുസ്തകമായി വിപണിയിലുണ്ടാകണമെന്ന് ആഗ്രഹമുണ്ട്. ഒരു കോപ്പി ഇപ്പോഴേ ബുക്ക് ചെയ്തിരിക്കുന്നു!

ഷഹന July 19, 2010 at 7:52 AM  

Really, Mr.Philip popped up with a gem.
Congrats!

Jayasankar,Nerinjampilli Illom Chandrasekharan July 19, 2010 at 8:59 AM  

ഒരു പ്രോഗ്രാമിലെ 'ചരം' എന്നാ പ്രജ്ഞയെ സാധാരണ നാം അടുക്കളയില്‍ ഉപയോഗിക്കുന്ന ഒരു സംഭരണ പാത്രത്തോടു ഉപമിക്കാം.അതിനു നാം നല്‍കുന്ന ലേബല്‍ ആയി num_12 എന്നതിനെ പരിഗണിക്കാം . അതില്‍ ഇട്ടുവക്കുന്ന സാധനമാണ് എന്നതിനെ സൂചിപ്പിക്കാന്‍ നാം കീ ബോര്‍ഡ്‌ലൂടെ നല്‍കുന്ന വില. 5 ആണ് നാം നല്‍കുന്നതെങ്കില്‍ , num_12 = 5 എന്നാല്‍ num_12 എന്ന പാത്രത്തില്‍ ഉള്ളത് 5 ആണ് എന്ന് മനസ്സിലാക്കണം .
num_12 = num_12 + 1 എന്നാല്‍ num_12 എന്ന പാത്രത്തില്‍ ഉള്ളത് എന്തായാലും അതിനോട് 1 കൂട്ടി അതില്‍ തന്നെ ഇട്ടു വൈക്കണം എന്നാണ് വിവക്ഷിക്കുന്നത് .
x = 5 എന്നാല്‍ x എന്ന ലേബലിലുള്ള പാത്രത്തില്‍ ൫ ഇട്ടു വയ്ക്കുക എന്നര്‍ത്ഥം .
പിന്നീട് x = 18 എന്നുകൊടുത്താല്‍ വിവക്ഷിക്കുന്നത് ക്ഷ് എന്ന പാത്രത്തില്‍ എന്തായാലും അത് (ഇവിടെ 5 ) കളഞ്ഞു അതില്‍ ൧൮ ഇട്ടു വൈക്കാനാണ് പറയുന്നത് .
ഗണിതത്തിലെ '=' ഉം പ്രോഗ്രാമിലെ '=' ഉം തമ്മിലുള്ള വ്യത്യാസം ഇതില്‍ നിന്ന് മനസ്സിലായി കാണുമല്ലോ ?

Jishad Cronic™ July 19, 2010 at 12:17 PM  

pdf format undo?

Sethu July 19, 2010 at 12:49 PM  

# A short program to show the assignment operator in action.
x = 5
print x
x = x + 1
print x
# Multipple with 2 and assigned to x

x=x*2
print "multiple of new X : ",x
y=10

z=x+y

print "value of Z : ",z


a="silsila "
b="Hai "
c=a+b+a
print "Value of C is : ",c
c=c*2
print c

Sethu July 19, 2010 at 12:54 PM  

# A progam that exchanges the values of two variables.
a = raw_input("Please enter a value for the first variable: ")
b = raw_input("Please enter a value for the second variable: ")
print "The value of the first variable is: ", a
print "The value of the second variable is: ", b
print "Going to exchange the values of the two variables..."
print "............................."
print "............................."
# Write code below that will exchange the values of the two variables a# and b.
c=a
b=a
a=c
print "Successfully exchanged the values of the two variables."
print "The value of the first variable is: ", a
print "The value of the second variable is: ", b

Free July 19, 2010 at 3:36 PM  

ഞാന്‍ അസൈന്‍മെന്റ് ചെയ്തു
a=raw_input("Hai,Ur Good Name please:")
print "Hello,", a





a=raw_input("What is ur Name:?")
print "OK, Fine, Glad to meet You,", b

Free July 19, 2010 at 3:58 PM  

a="thiruvananthapuram"
b="Kochi"
x=a
a=b
b=x
print a
Kochi
print b
thiruvananthapuram

Hari | (Maths) July 19, 2010 at 6:45 PM  

ഫിലിപ്പ് സാറിന്‍റെ നാലാം പാഠം അല്പം വൈകിയപ്പോഴാണ് പൈത്തണ്‍ പഠിക്കുന്നതിന് നമ്മുടെ അധ്യാപകര്‍ക്കുള്ള താല്പര്യം ഞങ്ങള്‍ക്ക് മനസ്സിലായത്. പക്ഷെ ഇത്തരമൊരു പാഠമൊരുക്കുന്നതിനുള്ള യത്നം നിസ്സാരമല്ലെന്ന് പോസ്റ്റിലെ ചിത്രങ്ങളും ഔട്ട്പുടുകളും കണ്ടാലറിയാം. ഫിലിപ്പ് മാഷിന് നന്ദിയോടൊപ്പമുള്ള സ്നേഹാദരങ്ങള്‍.

ravi July 19, 2010 at 9:26 PM  

കാക്കയെ പൂച്ചയാക്കുന്ന ഒരു പൈതണ്‍ പ്രോഗ്രാം എഴുതാമോ ?

Manmohan July 20, 2010 at 7:56 AM  

ഫിലിപ്പ് മാഷേ,

കാത്തിരിക്കുകയായിരുന്നു. നാലാം പാഠത്തിന് നന്ദി. സംശയമുണ്ടെങ്കില്‍ തീര്‍ച്ചയായും ചോദിക്കാം.

AZEEZ July 20, 2010 at 2:20 PM  

അത്ര നല്ലതല്ലാത്ത ഒരു പിഡിഎഫ്ഇവിടെ

ഫിലിപ്പ് July 20, 2010 at 6:22 PM  

ഗീത ടീച്ചര്‍,

പാഠങ്ങള്‍ എഴുതുന്ന മുറയ്ക്കുതന്നെ ശ്രീനാഥ് സാര്‍ അതെല്ലാം ചേര്‍ത്ത് പുസ്തകമാക്കി ഇവിടെ ഇടുന്നുണ്ടല്ലോ (മുകളില്‍ ഇടതുവശത്തുള്ള ലിങ്ക് നോക്കുക). ഈ പാഠത്തില്‍ വായനക്കാരുടെ പ്രതികരണങ്ങള്‍ക്കനുസരിച്ച് മാറ്റങ്ങളൊക്കെ വരുത്തിക്കഴിഞ്ഞ് ഇതും ആ പുസ്തകത്തിന്റെ കൂടെ ചേര്‍ക്കും. അങ്ങനെ പാഠങ്ങളൊക്കെ പ്രസിദ്ധീകരിച്ചു കഴിയുമ്പോഴേക്കും പുസ്തകവും റെഡി ആയിരിക്കും. വിപണിയില്‍ നിന്നല്ലാതെ തന്നെ പുസ്തകം കിട്ടും!

ഷഹന ടീച്ചര്‍, ഹോംസ് സാര്‍,

നന്ദി.

ജയശങ്കര്‍ സാര്‍,

വിശദീകരണത്തിന് നന്ദി. ചരത്തിന്റെ വില മുമ്പുള്ള വിലയുമായി ഒരു ബന്ധവുമില്ലാത്ത രീതിയില്‍ മാറ്റാന്‍ സാധ്യമാണ് എന്ന പ്രധാനപ്പെട്ട കാര്യം (ഉദാ: x = 5, അതുകഴിഞ്ഞ് x = 18) തെളിച്ചു പറയാന്‍ വിട്ടുപോയി എന്ന് ബ്ളോഗ് വായിച്ച് ഒരാള്‍ ചൂണ്ടിക്കാട്ടിയിരുന്നു. ഇതും കൂടി പോസ്റ്റില്‍ താമസിയാതെ തന്നെ ചേര്‍ക്കാം.

ജിഷാദ് സാര്‍,

മുകളില്‍ മുരളീധരന്‍ സാറിനു കൊടുത്ത മറുപടിയില്‍ ഈ പാഠത്തിന്റെ പിഡിഎഫിന്റെ ലിങ്ക് ഉണ്ട്. കൂടാതെ അസീസ് സാറും കമന്റില്‍ ഒരു പിഡിഎഫ് ലിങ്കിയിട്ടുണ്ട്. നല്ല പി ഡി എഫ് വരാനിരിക്കുന്നതുകൊണ്ടാണ് അത്ര നല്ലതല്ലാത്ത ഈ പതിപ്പിന്റെ ലിങ്ക് പാഠത്തിന്റെ ഭാഗമായി കൊടുക്കാഞ്ഞത്.

സേതു സാര്‍ (ടീച്ചര്‍?),

രണ്ടു പ്രോഗ്രാമുകളും കറകറക്റ്റ്! ആദ്യത്തെ പ്രോഗ്രാമില്‍ എന്താണ് ചെയ്യുന്നത് എന്നുള്ള കമന്റ് ഇട്ടതിന് രണ്ടു മാര്‍ക്ക് കൂടുതല്‍!

ഫ്രീ,

ആദ്യത്തെ പ്രോഗ്രാമിന്റെ രണ്ടാമത്തെ ഭാഗത്തിന് എന്തെങ്കിലും കുഴപ്പം ഉണ്ടോ?

രണ്ടാമത്തെ പ്രോഗ്രാം ശരിയാണ്.

ഹരി സാര്‍,

നന്ദി.

രവി സാര്‍,

കാക്കയിരിക്കുന്ന പെട്ടിയില്‍ പൂച്ചയെ ഇരുത്താനുള്ള പ്രോഗ്രാം എഴുതാം.

സാമാന്യബുദ്ധിയുള്ള ഒരു മനുഷ്യന് "പേപ്പറില്‍ പെന്‍സില്‍ ഉപയോഗിച്ച് ചെയ്യാന്‍ കഴിയുന്ന" കാര്യങ്ങളേ പ്രോഗ്രാം എഴുതി കംപ്യൂട്ടറിനെക്കൊണ്ട് ചെയ്യിക്കാന്‍ പറ്റൂ എന്നാണ് പരക്കെ വിശ്വസിക്കപ്പെടുന്നത്. ഭൗതികശാസ്ത്രത്തിലെ നിയമങ്ങളെപ്പോലെ, ഇതുവരെയുള്ള നിരീക്ഷണങ്ങളെല്ലാം അനുകൂലമായതുകൊണ്ട് ശരിയെന്നു വിശ്വസിക്കപ്പെടുന്ന ("empirical") ഒരു തത്വമാണ് ഇത്: "ചര്‍ച്ച്-ട്യൂറിങ്ങ് തീസിസ്" എന്ന പേരില്‍ ഇത് അറിയപ്പെടുന്നു. കൂടുതല്‍ കൃത്യമായ വിവരണത്തിന് വിക്കിപ്പീഡിയ കാണുക.


അസീസ് സാര്‍,

നന്ദി.

പുലരി,

സ്വാഗതം!

മന്‍മോഹന്‍ സാര്‍,

പ്രവര്‍ത്തനങ്ങളും ചെയ്തു നോക്കൂ. കമന്റിലായി വന്ന ഉത്തരങ്ങള്‍ നോക്കാതെ ചെയ്താല്‍ കൂടുതല്‍ പ്രയോജനപ്പെടും.

-- ഫിലിപ്പ്

Free July 20, 2010 at 7:09 PM  

ഫിലിപ്പ് സാര്‍ , ശരിയാണ് ആ ലൈനില്‍ a എന്ന് വേണം..
ഒരു ചെറിയ പ്രവര്‍ത്തനം :

പേരും വയസ്സും കമ്പ്യുട്ടറിന് നല്‍കുമ്പോള്‍ ജനിച്ച വര്‍ഷം ഉത്തരമായി ലഭിക്കുന്ന പൈതണ്‍ പ്രോഗ്രാം തയ്യാറാക്കുക. പഠിച്ചവര്‍ തയ്യാറാക്കുക ...

What is Your Name : ?
Type Your Age :?

ഇതാണ് ഇന്‍പുട്ടിലെ ചോദ്യങ്ങള്‍...

digitaleye July 20, 2010 at 8:35 PM  

a = raw_input("What is Your Name : ?: ")
b = input("Type Your Age :? ")
print "Name: ", a
print "Birth year: ", 2010-b

Sethu July 20, 2010 at 10:47 PM  
This comment has been removed by the author.
Sethu July 20, 2010 at 10:52 PM  

നന്ദി ഫിലിപ്പ് സാര്‍.
താങ്കളുടെ പ്യ്തോന്‍ പാടത്തിനായും കൂടുതല്‍ പ്രോഗ്രാമുകള്‍കായും കാത്തിരിക്കുന്നു.ഒരാഴ്ചയില്‍ രണ്ടോ മൂന്നോ പോസ്റ്റ്‌ എന്ന രീതിയില്‍ ചെയ്തു കൂടെ.താങ്കളുടെ ജോലി തിരക്ക് കുറക്കാന്‍ മാത്സ് ബ്ലോഗുമായി സഹകരിക്കുന്ന അധ്യാപകരെയും മറ്റു സോഫ്റ്റ്‌വെയര്‍ വിധക്തരുടേയും സഹായം ഉപയോഗിച്ച് കൂടെ??.

കിരണം എന്നയാള്‍ കുറച്ചു വേഗത്തില്‍ പൈതോന്‍ ക്ലാസ്സ്‌ പോസ്റ്റിയെങ്കിലും ഇപ്പോള്‍ അതും നിലച്ച മട്ടാണ് എന്നാലും ഓണ്‍ലൈന്‍ സഹായത്തോടെ ഇപ്പോള്‍ പൈതോന്‍ പഠിക്കാന്‍ സാധിക്കുന്നുണ്ട്.ഇതിനു എന്നെ സഹായിച്ച ഫിലിഫ് സാറിനോടും അതിനു വേദി ഒരുക്കിയ മത്സ് ബ്ലോഗിനോടും കടപ്പാടുണ്ട്.

Free July 21, 2010 at 6:37 PM  

@digitaleye

OK , Sir

GILRS' HIGH SCHOOL VALANCHERY August 1, 2010 at 9:03 PM  
This comment has been removed by the author.
GILRS' HIGH SCHOOL VALANCHERY August 1, 2010 at 9:06 PM  

ഞാൻ ഗണിതത്തിലും പ്രോഗ്രമിങ്ങിലും താല്പര്യമുള്ള സാമൂഹ്യശാസ്ത്രാധ്യപകൻ VB നന്നായി അറിയാം പൈത്തൺ പഠിക്കാൻ കുറെ കാലമായി എന്റെ പഴയ കുട്ടികൾ (അവർപ്രോഗ്രാമിങ്ങിൽ പുലികൾ) പറയുന്നു മടി പിടിച്ചിരിക്കുന്നു
നന്ദി…… (പേരൊന്നു മാറ്റാനും സാഹയിക്കണം)
മറ്റൊന്നു കൂടി ഗണിതതാല്പര്യം ഉള്ളവർ താഴെ തന്ന സൈറ്റിലൊന്നു പോണെ…….. http://projecteuler.net/index.php?section=problems

ഫിലിപ്പ് August 2, 2010 at 7:42 PM  

കമന്റുകളിട്ട എല്ലാവര്‍ക്കും നന്ദി. അടുത്ത പാഠം തയ്യാറാക്കി ബ്ളോഗ് ടീമിനെ ഏല്‍പ്പിച്ചു കഴിഞ്ഞു. പ്രസിദ്ധീകരണം നാളെ കാലത്ത് അഞ്ചു മണിക്ക്!

Free,

അടുത്ത പാഠം തയ്യാറാക്കിയത് താങ്കള്‍ തന്ന പ്രവര്‍ത്തനത്തിന്റെ ചുവടുപിടിച്ചാണ്. നന്ദി.

digitaleye,

താങ്കളുടെ ഉത്തരവും പുതിയ പാഠത്തിന്റെ ഭാഗമാക്കി. നന്ദി.

സേതു സാര്‍,

താങ്കളുടെ പരിഭവം എനിക്ക് മനസ്സിലാകുന്നുണ്ട്. എന്നാല്‍ ഓരോ പാഠവും തയ്യാറാക്കാന്‍ കുറച്ചധികം അധ്വാനം വേണ്ടി വരുന്നുണ്ട്. ഏകദേശം ഇരുപത് മണിക്കൂര്‍ (പല ദിവസങ്ങളിലായി) ചെലവിട്ടാലാണ് ഒരു പാഠം ഏറെക്കുറെ പ്രസിദ്ധീകരിക്കാവുന്ന പരുവത്തിലാകുന്നത്. മറ്റു ജോലികള്‍ക്കിടയില്‍ ഏതെങ്കിലുമൊക്കെ സമയത്തായിട്ടാണ് പാഠമെഴുത്ത് നടക്കുന്നത്. ഇപ്പോഴുള്ള നിലയ്ക്ക്, ഒന്നിച്ചിരുന്ന് ചര്‍ച്ച ചെയ്താല്‍ മാത്രമേ മറ്റൊരാള്‍ക്ക് ഈ പാഠങ്ങള്‍ എഴുതുന്നതില്‍ എന്നെ സഹായിക്കാന്‍ കഴിയൂ — പാഠങ്ങളുടെ ഉള്ളടക്കം ഇപ്പോള്‍ ആ രീതിയിലാണ്. ഇതുകൊണ്ടു തന്നെ പാഠമെഴുത്ത് തത്കാലം ഞാന്‍ തന്നെ ചെയ്തേ മതിയാകൂ. പേരു പുറത്തു പറയരുത് എന്ന കര്‍ശന നിബന്ധനയോടെ എന്നെ ഇതില്‍ സഹായിക്കുന്ന ഒരാള്‍ ഉണ്ടെന്നുകൂടി പറയട്ടെ. ആഴ്ചയില്‍ ഒരു പാഠമാണ് തത്കാലം ലക്ഷ്യമാക്കുന്നത്.

പാഠമെഴുത്ത് അല്ലാത്ത കാര്യങ്ങളില്‍ മറ്റുള്ളവര്‍ക്ക് ഏറെ സഹായിക്കാം; അങ്ങനെ സഹായിക്കുന്നുമുണ്ട്. ഉദാഹരണത്തിന് കമന്റുകളിലായി വരുന്ന നിര്‍ദ്ദേശങ്ങള്‍, ചോദ്യോത്തരങ്ങള്‍ മുതലായവ പാഠങ്ങള്‍ പഠിക്കുന്ന എല്ലാവരേയും സഹായിക്കും. ശ്രീനാഥ് സാര്‍ വളരെ നല്ല പിഡിഎഫ് തയ്യാറാക്കി നല്‍കി സഹായിക്കുന്നു. ഹസൈനാര്‍ സാര്‍ സ്കൂള്‍ കംപ്യൂട്ടറുകളെപ്പറ്റിയുള്ള എന്റെ സംശയങ്ങള്‍ക്ക് മറുപടി തന്നും, പാഠത്തില്‍ ഇക്കാര്യങ്ങളില്‍ വന്ന തെറ്റുകള്‍ ചൂണ്ടികാണിച്ചും, അങ്ങനെയങ്ങനെ ...

വളരെ നല്ല പല പൈത്തണ്‍ പാഠങ്ങളും നെറ്റില്‍ ലഭ്യമാണ്. തുടക്കക്കാര്‍ക്ക് ഏറെ നല്ലതെന്ന് എനിക്കു തോന്നിയ ഒരെണ്ണം ഇതാ. ഈ പാഠങ്ങള്‍ താങ്കളുടേതായ വേഗത്തില്‍ പഠിച്ചു പോകാം. ഇടയ്ക്കിടെ ഇവിടെ വന്ന് സംശയങ്ങള്‍ ചോദിക്കുകയും മറ്റുള്ളവര്‍ ചോദിക്കുന്ന സംശയങ്ങള്‍ക്ക് ഉത്തരം പറയുകയും പ്രവര്‍ത്തനങ്ങള്‍ ചെയ്തു നോക്കുകയും മറ്റും ആവാം. അപ്പോള്‍ താങ്കള്‍ ബോറടിക്കുകയുമില്ല, ഈ കൂട്ടായ്മയില്‍ പങ്കെടുക്കുകയും ചെയ്യാം.

കിച്ചു,

താങ്കളുടെ ഈമെയിലിന് ഞാന്‍ അയച്ച മറുപടി കണ്ടുകാണുമല്ലോ.

ഷാ സാര്‍,

നന്ദി.

വളാഞ്ചേരി മാഷ്,

പൈത്തണ്‍ പാഠങ്ങളിലേക്ക് സ്വാഗതം. മറ്റൊരു പ്രോഗ്രാമിംഗ് ഭാഷ അറിയാവുന്ന താങ്കള്‍ക്ക് പൈത്തണ്‍ പഠിക്കാന്‍ തീരെ ബുദ്ധിമുട്ട് ഉണ്ടാവില്ല്. പക്ഷെ VB-യും പൈത്തണും തമ്മില്‍ വിശദാംശങ്ങളിലും തത്വചിന്തയില്‍ത്തന്നെയും വ്യത്യാസങ്ങളുള്ളതുകൊണ്ട് പാഠങ്ങള്‍ ശ്രദ്ധിച്ച് വായിക്കുന്നതാവും നല്ലത്. IDLE ഇന്‍സ്റ്റാള്‍ ചെയ്ത് പ്രവര്‍ത്തനങ്ങള്‍ ചെയ്തുനോക്കേണ്ടതും വളരെ പ്രധാനമാണ്.

പേരു മാറ്റുന്ന കാര്യം എന്താണെന്ന് മനസ്സിലായില്ല.

പ്രോജക്ട് ഓയ്ലറിന്റെ ലിങ്കിന് നന്ദി. ഒരു പാഠം കൂടി കഴിഞ്ഞാല്‍ അവിടെയുള്ള ചെറിയ പസിലുകള്‍ പൈത്തണില്‍ ചെയ്തു തുടങ്ങാറാകുമെന്ന് തോന്നുന്നു. കേരളത്തില്‍ നിന്ന് ഒരു പട പൈത്തണ്‍ പ്രോഗ്രാമര്‍മാര്‍ ഇന്റര്‍നെറ്റിലുള്ള ഇമ്മാതിരി പ്രോഗ്രാമിംഗ് മത്സരങ്ങളില്‍ കൂട്ടത്തോടെ പങ്കെടുത്തു തുടങ്ങുന്ന കാലം അത്ര അകലെയല്ല എന്ന് തോന്നുന്നു :).

-- ഫിലിപ്പ്

GILRS' HIGH SCHOOL VALANCHERY August 2, 2010 at 10:40 PM  

ഫിലിപ്പ് മാഷെ….
താങ്കളുടെ പെട്ടന്നുള്ള മറുപടിക്ക് നന്ദി പേര് മറ്റുന്ന കാര്യം പറഞ്ഞത് എന്റെ പേര് വളഞ്ചേരി ഗേൾസ് ഹൈസ്ക്കൂൾ എന്ന് കിടക്കുന്നു. മറ്റാൻ നോക്കിയിട്ട് സാധിക്കുന്നില്ല.

GILRS' HIGH SCHOOL VALANCHERY August 2, 2010 at 10:48 PM  

ഹായ് ജയശങ്കർ
താങ്കളുടെ കിടിലൻ ഉദ:ക്ക് നന്ദി പല സമയത്തും = ബുദ്ധിമുട്ടിച്ചിട്ടുണ്ട്

ഫിലിപ്പ് August 3, 2010 at 4:58 AM  

വളാഞ്ചേരി മാഷ്,

പേരു മാറ്റാന്‍:

1. http://www.blogger.com-ല്‍ പോകുക.
2. താങ്കളുടെ ജീമെയില്‍ പേരും പാസ്‌വേഡും ഉപയോഗിച്ച് ലോഗിന്‍ ചെയ്യുക.
3. Dashboard എന്ന പേജിലേക്ക് പോകുക.
4. Edit profile എന്ന ലിങ്ക് അമര്‍ത്തുക.
5. അവിടെ Identity എന്ന കൂട്ടത്തിലെ Display Name എന്ന വരിയില്‍ താങ്കള്‍ക്ക് വേണ്ട പേര് ടൈപ്പ് ചെയ്യുക.
6. ഏറ്റവും താഴെയുള്ള Save Profile എന്ന ബട്ടണ്‍ അമര്‍ത്തുക.

--ഫിലിപ്പ്

Unnikrishnan,Valanchery August 3, 2010 at 9:18 PM  

നന്ദി ..ഫിലിപ്പ് മഷെ പേര്‌ ശരിയായി

chempakasseril November 14, 2010 at 11:20 PM  

പ്രിയ ഫിലിപ്പ് സാര്‍,
ഞാന്‍ ഈ രംഗത്തെ ശിശുവാണെ.അതുകൊണ്ട് ചോദ്യം ബാലിശമാണെങ്കിലും മറുപടി തരണെ!
a = input ("a ")
b = input ("b ")
c = input ("c ")
d = a+b+c
e = (12*a) + (13*b) + (14*c)
f = e/d
print 'THE AVERAGE AGE IS ", f


programme - average ഞാന്‍ ഇങ്ങനെ മാറ്റിയപ്പോള്‍ error വരാന്‍ എന്താ കാരണം?(ഞാന്‍ പാഠങ്ങള്‍ തുടങ്ങിയതേയുള്ളേ....)

ഫിലിപ്പ് November 15, 2010 at 2:24 AM  

ചെമ്പകശ്ശേരില്‍ സാര്‍,

ഉത്തരം അറിയാന്‍വേണ്ടി ചോദിക്കുന്ന ഒരു ചോദ്യവും ബാലിശമല്ല. സംശയങ്ങള്‍ ധൈര്യമായി ചോദിച്ചോളൂ.

സാറിന്റെ പ്രോഗ്രാമിന്റെ അവസാനത്തെ വരിയില്‍ ഒരു ചെറിയ തെറ്റുണ്ട്. രണ്ടുതരം ഉദ്ധരണചിഹ്നങ്ങള്‍ ഒരു string-നെ സൂചിപ്പിക്കാന്‍ ഉപയോഗിച്ചയിടത്താണ് തെറ്റിയത്. ഒരു string ഒന്നുകില് " " അല്ലെങ്കില്‍ ' ' എന്നിവയ്ക്കുള്ളിലായാണ് എഴുതേണ്ടത്. " ' എന്നോ ' " എന്നോ മാറിപ്പോയാല്‍ string കഴിഞ്ഞതായി പൈത്തണ് മനസ്സിലാവുകയില്ല. സാര്‍ പ്രോഗ്രാമില്‍ ' " എന്ന ക്രമത്തില്‍ എഴുതിയതുകൊണ്ട് ഈ string അവസാനിച്ചതായി സൂചിപ്പിക്കുന്ന '-നെ കാത്തിരിക്കുകയായിരുന്നു പൈത്തണ്‍. പ്രോഗ്രാം മൊത്തം വായിച്ചിട്ടും ഈ '-നെ കാണാഞ്ഞതുകൊണ്ടാണ് പ്രോഗ്രാമില്‍ തെറ്റുണ്ടെന്ന് പൈത്തണ്‍ പറഞ്ഞത്.

-- ഫിലിപ്പ്

chempakasseril November 15, 2010 at 7:28 PM  

ഓ..ഭയങ്കരം.ഞാന്‍ 2 ദിവസം കുറെ ഏറെ സമയം തല പുകച്ചതാ.എനിക്ക് ആ ചെറിയ തെറ്റ്! ഒരു പിടിയും കിട്ടിയില്ല.വളരെ നന്ദി...ചരത്തില്‍ വില സ്വീകരിക്കണമെങ്കില്‍ input-നു വലത്ത് ()-ഉം അതിനുള്ളില്‍ string-ഉം വേണോ? പഠനം ഉത്സാഹത്തോടെ മുന്നേറുന്നു.നന്ദി നന്ദി നന്ദി

ഫിലിപ്പ് November 15, 2010 at 10:15 PM  

ചെമ്പകശ്ശേരില്‍ സാര്‍,

പ്രോഗ്രാമിന് പുറത്തുനിന്ന് (പ്രോഗ്രാം ഉപയോഗിക്കുന്ന ആളില്‍നിന്ന്) ചരത്തിലേക്ക് വില എത്തിക്കണമെങ്കില്‍ input() (അല്ലെങ്കില്‍ raw_input()) ഉപയോഗിക്കണം. input എന്നതിന് ശേഷം () നിര്‍ബന്ധമാണ്; ()-നുള്ളില്‍ string വേണമെന്നില്ല. ()-ല്‍ ഒന്നുമില്ലെങ്കില്‍ പൈത്തണ്‍ ഒന്നും മിണ്ടാതെ വിലയ്ക്കായി കാത്തുനില്‍ക്കും.


-- ഫിലിപ്പ്

mohammed ashraf May 9, 2011 at 10:00 PM  

# this is a progrmme to find solution of quadratic equation
# but if discriminant is negative no solution actually
# but this programme give me solution
print "General form of a Quadratic Equation is ax2 + bx + c = 0"
print "give the values of a, b, c"
a=input("a=")
b=input("b=")
c=input("c=")
print "The Quadratic equation is " , a,"X2+", b,"x+",c,"=o"
D= (b*b)-(4*a*c)
print "Discriminent of the above equation= ",D
x1=(-b+D**1/2)/(2*a)
x2=(-b-D**1/2)/(2*a)
print "solution is", x1, x2

mohammed ashraf May 9, 2011 at 10:01 PM  

help me to modify my programme

bhama May 10, 2011 at 6:15 AM  

@ mohammed ashraf sir,

പൈത്തണ്‍ പാഠം 5 നോക്കൂ. ഇതിനുള്ള പരിഹാരം അവിടെ ഉണ്ട്

ഫിലിപ്പ് May 10, 2011 at 6:40 AM  

മുഹമ്മദ് സാര്‍ ,

ഒരു പ്രോഗ്രാം നാം ഉദ്ദേശിക്കുന്ന രീതിയില്‍ പ്രവര്‍ത്തിക്കുന്നില്ലെങ്കില്‍ അതിന്റെ കാരണം കണ്ടുപിടിക്കാന്‍ പൈത്തണില്‍ ചെയ്യാവുന്ന ഏറ്റവും എളുപ്പമുള്ള വഴി ഷെല്‍ ഉപയോഗിച്ച് ഈ പ്രോഗ്രാമിലെ തെറ്റിപ്പോകാവുന്നതെന്ന് നമുക്ക് സംശയം തോന്നുന്ന വരികള്‍ പ്രവര്‍ത്തിപ്പിച്ച് നോക്കുക എന്നതാണ്.
താങ്കളുടെ പ്രോഗ്രാമില്‍ ഇങ്ങനെയുള്ള വരികള്‍ ഏതൊക്കെയാണ്? കണക്കുകൂട്ടലുകള്‍ ചെയ്യുന്ന മൂന്ന് വരികളാണ് പ്രധാന നോട്ടപ്പുള്ളികള്‍. മറ്റ് വരികളില്‍ ഇന്‍പുട്/ഔട്പുട്ട് മാത്രമാണല്ലോ ചെയ്യുന്നത്. അതുകൊണ്ട് കണക്കുകൂട്ടലുകള്‍ ഉള്ള വരികള്‍ നമുക്ക് ആദ്യം പരിശോധിക്കാം. ഇവയില്‍ തെറ്റൊന്നും കാണുന്നില്ലെങ്കില്‍ മറ്റ് വരികളും പരിശോധിക്കേണ്ടി വരും.

അപ്പോള്‍ നമുക്ക് ചെയ്യാവുന്നത്: D നെഗറ്റീവ് സംഖ്യയായി വരുന്ന രീതിയില്‍ a, b, c എന്നിവയ്ക്ക് വിലകള്‍ കൊടുത്ത് (ഉദാ: a = b = c = 1) ഈ മൂന്ന് വരികളും ഷെല്ലില്‍ പ്രവര്‍ത്തിപ്പിച്ച് നോക്കൂ. ഓരോ വരിയുടെയും ഫലത്തിന് (ഉദാ: D കണ്ടുപിടിക്കാനുള്ള വരി പ്രവര്‍ത്തിപ്പിച്ചുകഴിയുമ്പോള്‍ D-യുടെ വിലയ്ക്ക് ) എന്തെങ്കിലും കുഴപ്പം കാണുന്നുണ്ടോ? ഉണ്ടെങ്കില്‍ എന്തായിരിക്കും ഇതിന് കാരണം?

ഇങ്ങനെ പരിശോധിക്കുമ്പോള്‍ ശ്രദ്ധിക്കേണ്ടതായ, കേള്‍ക്കുമ്പോള്‍ നിസ്സാരമെന്ന് തോന്നുന്നതെങ്കിലും പലപ്പോഴും അവഗണിക്കപ്പെടുന്നതായ ഒരു കാര്യം : പ്രോഗ്രാമിലെ വരികള്‍ എന്താണോ, അവയെയാണ് പ്രവര്‍ത്തിപ്പിച്ച് നോക്കേണ്ടത്. പ്രോഗ്രാമിലെ വരികള്‍ എങ്ങനെയായിരിക്കണമെന്ന് നമുക്ക് തോന്നുന്നതിനനുസരിച്ചുള്ള വരികളെയല്ല! എങ്കിലേ പ്രോഗ്രാമിലെ തെറ്റ് മനസ്സിലാകുകയുള്ളൂ.

പ്രോഗ്രാമിലെ തെറ്റ് കണ്ടുപിടിച്ചുകഴിഞ്ഞാല്‍ അത് തിരുത്താനുള്ള വഴി ഭാമ ടീച്ചര്‍ പറഞ്ഞതുപോലെ അഞ്ചാം പാഠത്തില്‍ ഉണ്ട്.

ഇങ്ങനെ ചെയ്ത് നോക്കി സംശയങ്ങള്‍ ഉണ്ടെങ്കില്‍ വീണ്ടും ചോദിക്കുക. പ്രോഗ്രാം ശരിയാക്കാന്‍ കഴിഞ്ഞെങ്കില്‍ അതും പറയുക!

-- ഫിലിപ്പ്

mohammed ashraf May 11, 2011 at 2:56 PM  

thank you Philip sir & Bhama teacher.
now I am try to find the error by checking line by line. if and only if i get the correct answer I will refer fifth lesson. thank you Bhama teacher

mohammed ashraf May 11, 2011 at 4:26 PM  

ഫിലിപ്പ് സാര്‍ ഞാന്‍ വിവേചകം  നെഗറ്റിവു ആകുന്ന തരത്തില്‍ വിവിധ വിലകള്‍ കൊടുത്തു നോക്കി. അപ്പോഴെല്ലാ വിലയായി 
-3 ആണു കിട്ടിയത്. കൂടാതെ ആദ്യത്തെ മൂല്യം 
-4 ഉം രണ്ടാമത്തെ മൂല്യം 0 ഉം കിട്ടുന്നു.


# this is a progrmme to find solution of quadratic equation
# I corrected this programme
# philip sir please give me more advice
print "General form of a Quadratic Equation is ax2 + bx + c = 0"
print "give the values of a, b, c"
a=input("a=")
b=input("b=")
c=input("c=")
print "The Quadratic equation is " , a,"X2+", b,"x+",c,"=o"
D= (b*b)-(4*a*c)
x1=(-b+D**1/2)/(2*a)
x2=(-b-D**1/2)/(2*a)
print "Discriminent of the above equation= ",D
if D>=0 :
print "solution is", x1, x2,

else :
print "There is no solution"

mohammed ashraf May 11, 2011 at 4:50 PM  

philip sir,
I saw the program of binu sir at 2010 august 7. and your correction now I am studying that program thoroghly, Sir today I started the fifth lesson. if--else. very interesting and your advice is really good. I expect more from you sir. thank you

പകര്‍പ്പവകാശ സൂചന

SyntaxHighlighter