CS50 – Week 6

Python

Python – foydalanish uchun qulay, ko’p qirrali dasturlash tili bo’lib, dasturlashga yangi kirganlar uchun ham, soha mutaxassislari uchun ham zo’r tanlov hisoblanadi.
C tilidan farqli o‘laroq, Python interpretatsiya qilinadigan til bo‘lib, unda dasturni alohida kompilyatsiya qilish shart emas. Buning o‘rniga dasturni Python interpretatorida ishga tushiriladi.

C tilida yozilgan "hello, world" xabarini ekranga chiqaruvchi kod Python tilida quyidagicha ifodalanadi:

<span>print</span><span>(</span><span>"</span><span>hello, world</span><span>"</span><span>)</span>
<span>print</span><span>(</span><span>"</span><span>hello, world</span><span>"</span><span>)</span>
print("hello, world")

Enter fullscreen mode Exit fullscreen mode

E’tibor beradigan bo’lsak bunda hech qanday nuqtali vergul yo‘q va hech qanday kutubxona talab qilinmaydi. Pythonda C tilida ancha murakkab bo‘lgan kodlarni nisbatan oddiylik bilan amalga oshirishi mumkin.

O‘zgaruvchini e’lon qilish (Variable declaration) jarayoni Python tilida soddalashtirilgan. Masalan, C tilida o’zgaruvchini int counter = 0; kabi e’lon qilinadi. Python tilida esa o‘zgaruvchining turini e’lon qilish talab qilinmaydi: counter = 0.

Python’da ma’lumot turlarini aniq ko‘rsatish shart emas, uni interpretatorning o’zi o’zgaruvchining qiymatiga qarab aniqlashtirib oladi.
Python’da odatda quyidagi ma’lumot turlar qo‘llaniladi:

  • bool
  • float
  • int
  • str

C tilidagi kabi long va double turlari Python’da mavjud emas. Python katta va kichik sonlar uchun qaysi ma’lumot turini ishlatish kerakligini o‘zi hal qiladi.

Python’da qo’llaniladigan boshqa ma’lumot turlariga quyidagilar kiradi:

  • range
  • list
  • tuple
  • dict
  • set

Bu ma’lumot turlarining har birini C tilida ham amalga oshirish mumkin, biroq Python’da ularni yanada soddaroq tarzda qo‘llash imkoniyati mavjud.


Shart operatorlari

Python’da shart operatorlaridan foydalanganda qavslar – () majburiy emas.
Python’da {} o‘rniga indentatsiya ishlatiladi.
else if C’da ishlatilsa, Python’da buning o‘rniga elif qo‘llaniladi.
if, elif va else operatorlaridan keyin qo’sh nuqta : qo‘yiladi.

<span>from</span> <span>cs50</span> <span>import</span> <span>get_int</span>
<span>x</span> <span>=</span> <span>get_int</span><span>(</span><span>"</span><span>x ni kiriting: </span><span>"</span><span>)</span>
<span>y</span> <span>=</span> <span>get_int</span><span>(</span><span>"</span><span>y ni kiriting: </span><span>"</span><span>)</span>
<span>if</span> <span>x</span> <span><</span> <span>y</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>x soni y sonidan kichik</span><span>"</span><span>)</span>
<span>elif</span> <span>x</span> <span>></span> <span>y</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>x soni y sonidan katta</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>x soni y soniga teng</span><span>"</span><span>)</span>
<span>from</span> <span>cs50</span> <span>import</span> <span>get_int</span>

<span>x</span> <span>=</span> <span>get_int</span><span>(</span><span>"</span><span>x ni kiriting: </span><span>"</span><span>)</span>
<span>y</span> <span>=</span> <span>get_int</span><span>(</span><span>"</span><span>y ni kiriting: </span><span>"</span><span>)</span>

<span>if</span> <span>x</span> <span><</span> <span>y</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>x soni y sonidan kichik</span><span>"</span><span>)</span>
<span>elif</span> <span>x</span> <span>></span> <span>y</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>x soni y sonidan katta</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>x soni y soniga teng</span><span>"</span><span>)</span>
from cs50 import get_int x = get_int("x ni kiriting: ") y = get_int("y ni kiriting: ") if x < y: print("x soni y sonidan kichik") elif x > y: print("x soni y sonidan katta") else: print("x soni y soniga teng")

Enter fullscreen mode Exit fullscreen mode

C’da || bilan ifodalanadigan “yoki” mantiqiy operatori Python’da or bilan almashtiriladi.
Python’da char o‘rniga str ishlatiladi, bu esa bitta belgi yoki satr bilan ishlash imkonini beradi.

<span>from</span> <span>cs50</span> <span>import</span> <span>get_string</span>
<span>s</span> <span>=</span> <span>get_string</span><span>(</span><span>"</span><span>Ma</span><span>'</span><span>lumotlar o</span><span>'</span><span>zgartirilishiga rozimisiz? </span><span>"</span><span>)</span>
<span>if</span> <span>s</span> <span>==</span> <span>"</span><span>Y</span><span>"</span> <span>or</span> <span>s</span> <span>==</span> <span>"</span><span>y</span><span>"</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>Ha.</span><span>"</span><span>)</span>
<span>elif</span> <span>s</span> <span>==</span> <span>"</span><span>N</span><span>"</span> <span>or</span> <span>s</span> <span>==</span> <span>"</span><span>n</span><span>"</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>Yo</span><span>'</span><span>q.</span><span>"</span><span>)</span>
<span>from</span> <span>cs50</span> <span>import</span> <span>get_string</span>
<span>s</span> <span>=</span> <span>get_string</span><span>(</span><span>"</span><span>Ma</span><span>'</span><span>lumotlar o</span><span>'</span><span>zgartirilishiga rozimisiz? </span><span>"</span><span>)</span>

<span>if</span> <span>s</span> <span>==</span> <span>"</span><span>Y</span><span>"</span> <span>or</span> <span>s</span> <span>==</span> <span>"</span><span>y</span><span>"</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>Ha.</span><span>"</span><span>)</span>
<span>elif</span> <span>s</span> <span>==</span> <span>"</span><span>N</span><span>"</span> <span>or</span> <span>s</span> <span>==</span> <span>"</span><span>n</span><span>"</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>Yo</span><span>'</span><span>q.</span><span>"</span><span>)</span>
from cs50 import get_string s = get_string("Ma'lumotlar o'zgartirilishiga rozimisiz? ") if s == "Y" or s == "y": print("Ha.") elif s == "N" or s == "n": print("Yo'q.")

Enter fullscreen mode Exit fullscreen mode


Takrorlash operatorlari

Python’da takrorlanish operatorlari (loops) sintaksisi C ga juda o‘xshash, lekin sodda va tushunarliroq.
while sikli yordamida “meow” xabarini ekranga chiqaramiz:

<span>i</span> <span>=</span> <span>0</span>
<span>while</span> <span>i</span> <span><</span> <span>3</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>meow</span><span>"</span><span>)</span>
<span>i</span> <span>+=</span> <span>1</span>
<span>i</span> <span>=</span> <span>0</span>
<span>while</span> <span>i</span> <span><</span> <span>3</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>meow</span><span>"</span><span>)</span>
    <span>i</span> <span>+=</span> <span>1</span>
i = 0 while i < 3: print("meow") i += 1

Enter fullscreen mode Exit fullscreen mode

for sikli yordamida yuqoridagi kodni yana ham soddalashtirishimiz mumkin:

<span>for</span> <span>i</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>):</span>
<span>print</span><span>(</span><span>"</span><span>meow</span><span>"</span><span>)</span>
<span>for</span> <span>i</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>):</span>
    <span>print</span><span>(</span><span>"</span><span>meow</span><span>"</span><span>)</span>
for i in range(3): print("meow")

Enter fullscreen mode Exit fullscreen mode

Bu yerda ining qiymatini Python avtomatik ravishda oshirib boradi.
Shuningdek, yuqoridagi kodni quyidagicha yozishimiz mumkin:

<span>def</span> <span>main</span><span>():</span>
<span>meow</span><span>(</span><span>3</span><span>)</span>
<span>def</span> <span>meow</span><span>(</span><span>n</span><span>):</span>
<span>for</span> <span>i</span> <span>in</span> <span>range</span><span>(</span><span>n</span><span>):</span>
<span>print</span><span>(</span><span>"</span><span>meow</span><span>"</span><span>)</span>
<span>main</span><span>()</span>
<span>def</span> <span>main</span><span>():</span>
    <span>meow</span><span>(</span><span>3</span><span>)</span>


<span>def</span> <span>meow</span><span>(</span><span>n</span><span>):</span>
    <span>for</span> <span>i</span> <span>in</span> <span>range</span><span>(</span><span>n</span><span>):</span>
        <span>print</span><span>(</span><span>"</span><span>meow</span><span>"</span><span>)</span>


<span>main</span><span>()</span>
def main(): meow(3) def meow(n): for i in range(n): print("meow") main()

Enter fullscreen mode Exit fullscreen mode

Bunday yondashuv kodni modullashtiradi.


List (Ro’yxat)

List yordamida bir o’zgaruvchida ko’p qiymatlar saqlashimiz mumkin. Listlarning elementlariga indexsi orqali murojaat qila olamiz.

<span>scores</span> <span>=</span> <span>[</span><span>72</span><span>,</span> <span>73</span><span>,</span> <span>33</span><span>]</span>
<span># O'rtacha qiymatni topamiz </span><span>average</span> <span>=</span> <span>sum</span><span>(</span><span>scores</span><span>)</span> <span>/</span> <span>len</span><span>(</span><span>scores</span><span>)</span>
<span>print</span><span>(</span><span>f</span><span>"</span><span>Average: </span><span>{</span><span>average</span><span>}</span><span>"</span><span>)</span>
<span>scores</span> <span>=</span> <span>[</span><span>72</span><span>,</span> <span>73</span><span>,</span> <span>33</span><span>]</span>

<span># O'rtacha qiymatni topamiz </span><span>average</span> <span>=</span> <span>sum</span><span>(</span><span>scores</span><span>)</span> <span>/</span> <span>len</span><span>(</span><span>scores</span><span>)</span>
<span>print</span><span>(</span><span>f</span><span>"</span><span>Average: </span><span>{</span><span>average</span><span>}</span><span>"</span><span>)</span>
scores = [72, 73, 33] # O'rtacha qiymatni topamiz average = sum(scores) / len(scores) print(f"Average: {average}")

Enter fullscreen mode Exit fullscreen mode

len() metodi yordamida listing uzunligini, ya’ni elementlar sonini aniqlaymiz.
sum() metodi yordamida sonlardan iborat bo’lgan listning elemtlari yig’indisini hisoblaymiz.

Foydalanuvchidan qiymatlarni olish uchun sikldan foydalanish mumkin:

<span>from</span> <span>cs50</span> <span>import</span> <span>get_int</span>
<span># Foydalanuvchidan qiymatlarni kiritishni so'raymiz </span><span>scores</span> <span>=</span> <span>[]</span>
<span>for</span> <span>i</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>):</span>
<span>score</span> <span>=</span> <span>get_int</span><span>(</span><span>"</span><span>Score: </span><span>"</span><span>)</span>
<span>scores</span><span>.</span><span>append</span><span>(</span><span>score</span><span>)</span>
<span># O'rtacha qiymatni topamiz </span><span>average</span> <span>=</span> <span>sum</span><span>(</span><span>scores</span><span>)</span> <span>/</span> <span>len</span><span>(</span><span>scores</span><span>)</span>
<span>print</span><span>(</span><span>f</span><span>"</span><span>Average: </span><span>{</span><span>average</span><span>}</span><span>"</span><span>)</span>
<span>from</span> <span>cs50</span> <span>import</span> <span>get_int</span>

<span># Foydalanuvchidan qiymatlarni kiritishni so'raymiz </span><span>scores</span> <span>=</span> <span>[]</span>
<span>for</span> <span>i</span> <span>in</span> <span>range</span><span>(</span><span>3</span><span>):</span>
    <span>score</span> <span>=</span> <span>get_int</span><span>(</span><span>"</span><span>Score: </span><span>"</span><span>)</span>
    <span>scores</span><span>.</span><span>append</span><span>(</span><span>score</span><span>)</span>

<span># O'rtacha qiymatni topamiz </span><span>average</span> <span>=</span> <span>sum</span><span>(</span><span>scores</span><span>)</span> <span>/</span> <span>len</span><span>(</span><span>scores</span><span>)</span>
<span>print</span><span>(</span><span>f</span><span>"</span><span>Average: </span><span>{</span><span>average</span><span>}</span><span>"</span><span>)</span>
from cs50 import get_int # Foydalanuvchidan qiymatlarni kiritishni so'raymiz scores = [] for i in range(3): score = get_int("Score: ") scores.append(score) # O'rtacha qiymatni topamiz average = sum(scores) / len(scores) print(f"Average: {average}")

Enter fullscreen mode Exit fullscreen mode

append metodi listga yangi qiymat qo‘shadi.

Python’da list ichida qiymatni qidirish uchun sikldan foydalanish yoki qisqaroq usuldan foydalanish mumkin:

<span># Ismlar ro'yxati </span><span>names</span> <span>=</span> <span>[</span><span>"</span><span>Carter</span><span>"</span><span>,</span> <span>"</span><span>David</span><span>"</span><span>,</span> <span>"</span><span>John</span><span>"</span><span>]</span>
<span># Foydalanuvchidan ism kiritishni so'raymiz </span><span>name</span> <span>=</span> <span>input</span><span>(</span><span>"</span><span>Name: </span><span>"</span><span>)</span>
<span># Ro'yxatdan qidiramiz </span><span>if</span> <span>name</span> <span>in</span> <span>names</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>Topildi</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>Topilmadi</span><span>"</span>
<span># Ismlar ro'yxati </span><span>names</span> <span>=</span> <span>[</span><span>"</span><span>Carter</span><span>"</span><span>,</span> <span>"</span><span>David</span><span>"</span><span>,</span> <span>"</span><span>John</span><span>"</span><span>]</span>

<span># Foydalanuvchidan ism kiritishni so'raymiz </span><span>name</span> <span>=</span> <span>input</span><span>(</span><span>"</span><span>Name: </span><span>"</span><span>)</span>

<span># Ro'yxatdan qidiramiz </span><span>if</span> <span>name</span> <span>in</span> <span>names</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>Topildi</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>Topilmadi</span><span>"</span>
# Ismlar ro'yxati names = ["Carter", "David", "John"] # Foydalanuvchidan ism kiritishni so'raymiz name = input("Name: ") # Ro'yxatdan qidiramiz if name in names: print("Topildi") else: print("Topilmadi"

Enter fullscreen mode Exit fullscreen mode

in operatori list ichida qaralayotgan qiymat bor-yo‘qligini tekshiradi.


Dictionary (Lug’at)

Dictionary — bu kalit-qiymat juftliklari bo‘lib, qidiruv jarayonini tezlashtiradi.

<span>from</span> <span>cs50</span> <span>import</span> <span>get_string</span>
<span>people</span> <span>=</span> <span>{</span>
<span>"</span><span>Carter</span><span>"</span><span>:</span> <span>"</span><span>+1-617-495-1000</span><span>"</span><span>,</span>
<span>"</span><span>David</span><span>"</span><span>:</span> <span>"</span><span>+1-617-495-1000</span><span>"</span><span>,</span>
<span>"</span><span>John</span><span>"</span><span>:</span> <span>"</span><span>+1-949-468-2750</span><span>"</span><span>,</span>
<span>}</span>
<span># Kiritilgan ismni qo'yxatdan qidiramiz </span><span>name</span> <span>=</span> <span>get_string</span><span>(</span><span>"</span><span>Name: </span><span>"</span><span>)</span>
<span>if</span> <span>name</span> <span>in</span> <span>people</span><span>:</span>
<span>print</span><span>(</span><span>f</span><span>"</span><span>Telefon raqam: </span><span>{</span><span>people</span><span>[</span><span>name</span><span>]</span><span>}</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>Topilmadi</span><span>"</span><span>)</span>
<span>from</span> <span>cs50</span> <span>import</span> <span>get_string</span>

<span>people</span> <span>=</span> <span>{</span>
    <span>"</span><span>Carter</span><span>"</span><span>:</span> <span>"</span><span>+1-617-495-1000</span><span>"</span><span>,</span>
    <span>"</span><span>David</span><span>"</span><span>:</span> <span>"</span><span>+1-617-495-1000</span><span>"</span><span>,</span>
    <span>"</span><span>John</span><span>"</span><span>:</span> <span>"</span><span>+1-949-468-2750</span><span>"</span><span>,</span>
<span>}</span>

<span># Kiritilgan ismni qo'yxatdan qidiramiz </span><span>name</span> <span>=</span> <span>get_string</span><span>(</span><span>"</span><span>Name: </span><span>"</span><span>)</span>
<span>if</span> <span>name</span> <span>in</span> <span>people</span><span>:</span>
    <span>print</span><span>(</span><span>f</span><span>"</span><span>Telefon raqam: </span><span>{</span><span>people</span><span>[</span><span>name</span><span>]</span><span>}</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>Topilmadi</span><span>"</span><span>)</span>
from cs50 import get_string people = { "Carter": "+1-617-495-1000", "David": "+1-617-495-1000", "John": "+1-949-468-2750", } # Kiritilgan ismni qo'yxatdan qidiramiz name = get_string("Name: ") if name in people: print(f"Telefon raqam: {people[name]}") else: print("Topilmadi")

Enter fullscreen mode Exit fullscreen mode

people[name] orqali lug‘at ichidan mos qiymat olinadi.
Lug‘atning qidirish tezligi odatda O(1).


Buyruq Qatori Argumentlari

Python’da sys kutubxonasi yordamida buyruq qatori argumentlarini ishlatish mumkin:

<span>from</span> <span>sys</span> <span>import</span> <span>argv</span>
<span>if</span> <span>len</span><span>(</span><span>argv</span><span>)</span> <span>==</span> <span>2</span><span>:</span>
<span>print</span><span>(</span><span>f</span><span>"</span><span>salom, </span><span>{</span><span>argv</span><span>[</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>salom, dunyo</span><span>"</span><span>)</span>
<span>from</span> <span>sys</span> <span>import</span> <span>argv</span>

<span>if</span> <span>len</span><span>(</span><span>argv</span><span>)</span> <span>==</span> <span>2</span><span>:</span>
    <span>print</span><span>(</span><span>f</span><span>"</span><span>salom, </span><span>{</span><span>argv</span><span>[</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span>
<span>else</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>salom, dunyo</span><span>"</span><span>)</span>
from sys import argv if len(argv) == 2: print(f"salom, {argv[1]}") else: print("salom, dunyo")

Enter fullscreen mode Exit fullscreen mode

argv – argumentlar ro‘yxatini o‘z ichiga oladi, birinchi element esa fayl nomidir.
Barcha argumentlarni ekranga chiqaramiz:

<span>from</span> <span>sys</span> <span>import</span> <span>argv</span>
<span>for</span> <span>arg</span> <span>in</span> <span>argv</span><span>:</span>
<span>print</span><span>(</span><span>arg</span><span>)</span>
<span>from</span> <span>sys</span> <span>import</span> <span>argv</span>

<span>for</span> <span>arg</span> <span>in</span> <span>argv</span><span>:</span>
    <span>print</span><span>(</span><span>arg</span><span>)</span>
from sys import argv for arg in argv: print(arg)

Enter fullscreen mode Exit fullscreen mode

Dastur qanday holatda yakunlagnanini bildirish uchun ma’lum chiqish kodlari (exit status) dan foydalanamiz:

<span>import</span> <span>sys</span>
<span>if</span> <span>len</span><span>(</span><span>sys</span><span>.</span><span>argv</span><span>)</span> <span>!=</span> <span>2</span><span>:</span>
<span>print</span><span>(</span><span>"</span><span>Buyruq qatori argumentini kiriting.</span><span>"</span><span>)</span>
<span>sys</span><span>.</span><span>exit</span><span>(</span><span>1</span><span>)</span>
<span>print</span><span>(</span><span>f</span><span>"</span><span>salom, </span><span>{</span><span>sys</span><span>.</span><span>argv</span><span>[</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span>
<span>sys</span><span>.</span><span>exit</span><span>(</span><span>0</span><span>)</span>
<span>import</span> <span>sys</span>

<span>if</span> <span>len</span><span>(</span><span>sys</span><span>.</span><span>argv</span><span>)</span> <span>!=</span> <span>2</span><span>:</span>
    <span>print</span><span>(</span><span>"</span><span>Buyruq qatori argumentini kiriting.</span><span>"</span><span>)</span>
    <span>sys</span><span>.</span><span>exit</span><span>(</span><span>1</span><span>)</span>

<span>print</span><span>(</span><span>f</span><span>"</span><span>salom, </span><span>{</span><span>sys</span><span>.</span><span>argv</span><span>[</span><span>1</span><span>]</span><span>}</span><span>"</span><span>)</span>
<span>sys</span><span>.</span><span>exit</span><span>(</span><span>0</span><span>)</span>
import sys if len(sys.argv) != 2: print("Buyruq qatori argumentini kiriting.") sys.exit(1) print(f"salom, {sys.argv[1]}") sys.exit(0)

Enter fullscreen mode Exit fullscreen mode

sys.exit() yordamida chiqish kodi qaytariladi (masalan, 0 — dastur muvaffaqiyatli yakunlanganligini bildiradi).

Ushbu maqolada CS50x 2024 manbasidan foydalanilgan.

原文链接:CS50 – Week 6

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
To beleve , each day the sun wll not lve up to ther own smle.
要坚信,每一天的阳光都不会辜负自己的笑容
评论 抢沙发

请登录后发表评论

    暂无评论内容