Introducere în Python

Responsabil: Laura Vasilescu

Exerciții de laborator CB/CD

Vă invităm să evaluați activitatea echipei de programare CB/CD și să precizați punctele tari și punctele slabe și sugestiile voastre de îmbunătățire a materiei. Feedback-ul vostru este foarte important pentru noi să creștem calitatea materiei în anii următori și să îmbunătățim materiile pe care le veți face în continuare.

Găsiți formularul de feedback în partea dreaptă a paginii principale de programare de pe cs.curs.pub.ro într-un frame numit “FEEDBACK” (moodle). Trebuie să fiți inrolați la cursul de programare, altfel veți primi o eroare de acces.

Pentru a putea înțelege și valorifica feedback-ul mai ușor, apreciem orice formă de feedback negativ constructivă. Nu este suficient să ne spuneți, spre exemplu, tema 5 a fost grea, ne dorim să știm care au fost dificultățiile și, eventual, o propunere despre cum considerați că ar fi trebuit procedat.

Obiective

În urma parcurgerii acestui laborator studentul va fi capabil să:

  • scrie cod într-un alt limbaj de programare

Am ales Python deoarece este un limbaj de nivel înalt ce pune accent pe expresivitatea și înțelegerea ușoară a codului. Sintaxa este foarte simplă și intuitivă, iar limbajul este foarte răspândit în zona de scripting și de programarea de aplicații.

Prerequisites

Este necesară instalarea următoarelor pachete:

sudo apt-get install python
sudo apt-get install python-pygame

Sintaxa Python

Sintaxa Python este destul de intuitivă. Variabilele nu trebuie declarate în prealabil și vor avea tipul de date stabilit în mod dinamic, în funcție de asignarea făcută.

Interpretorul Python

Python pune la dispoziție o consolă (similar cu Bash) în care utilizatorul poate scrie instrucțiuni sub forma unor comenzi. Consola se pornește prin lansarea comenzii python într-un terminal.

ieu@schnurr ~ $ python
Python 2.7.5+ (default, Feb 27 2014, 19:37:08) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 3 * 6 + 10
>>> b = 6 / 7 + a # comentariile sunt prefixate de caracterul #
>>> c = a + b
>>> c
56
>>> a = "ana"
>>> d = b + a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> d = str(b) + a
>>> d
'28ana'
>>> 

Hello World

>>> print "Hello World"
Hello World
>>>

Instrucțiuni

În Python nu este necesară folosirea de ';' la sfârșitul unei linii. Fiecare linie reprezintă o instrucțiune.

Dacă în C blocurile sunt delimitate cu ajutorul acoladelor, în Python delimitarea blocurilor se face prin indentarea codului. Astfel, în Python indentarea codului devine obligatorie.

if
if conditie1:
    functie1()
elif conditie2:
    functie2()
else:
    functie3()
while
while conditie:
    instructiune1
    instructiune2
for
for i in [0, 1, 2, 3]:
    instr

sau

for i in range(4):
    instr

sau (cu pas de incrementare egal cu 2)

for i in range(0, 10, 2):
    instr

Tipuri de date

liste/vectori

Se pot declara folosind sintaxa:

a = [1, 2, 3]

Pot fi concatenate folosind '+' și pot să nu aibă neapărat același tip de elemente:

>>> a = [1, 2, 3] + ['a', 'b', 'c']
>>> a
[1, 2, 3, 'a', 'b', 'c']

Pot fi accesate prin index:

>>> a[0]
1
>>> a[3]
'a'

Se pot adăuga elemente la final folosind metoda 'append':

>>> a.append("ana")
>>> a
[1, 2, 3, 'a', 'b', 'c', 'ana']

Rularea unui program sursă

Similar cu Bash, utilizatorul poate scrie comenzi în interpretor sau le poate înlănțui într-un fișier sub forma unui script (fișier sursă).

Spre exemplu, salvați codul sursă de mai jos într-un fișier numit sum2.py. Programul calculează: \begin{eqnarray*}& & S_2 = \sum_{k=0}^{100} {k^2}\end{eqnarray*}

s2 = 0

for i in range(0, 100):
	s2 = s2 + i * i

print s2

Pentru a rula programul, tastați în terminal comanda:

ieu@schnurr ~ $ python sum2.py 
328350

Exerciții

  1. Scrieți un program care afișează pe ecran primele 100 de numere ale lui Fibonacci.
  2. Pornind de la scheletul de cod de mai jos, faceți în așa fel încât mingea să se miște incremental în toate direcțiile posibile, fără a ieși din ecran.

extra :

  1. modificați în așa fel încât în loc de cerc să apară o imagine
  2. desenați mai multe forme
  3. creați interacțiuni
  4. creați un joc :)

Downloadați fișierul de >>> aici <<<.

import pygame
from pygame.locals import *
 
w_size = 400
h_size = 400
screen = pygame.display.set_mode((w_size, h_size), DOUBLEBUF)
 
blue_color = (0, 0, 255)
black_color = (0, 0, 0)
p_x = 10
p_y = 200
radius = 20
 
running = True
while running:
	for event in pygame.event.get():
		increment = False
 
		if event.type == pygame.QUIT:
			running = False
		if event.type == KEYDOWN:
			if event.key == K_RIGHT:
				increment = True
 
		if increment:
			p_x = p_x + 1
 
		position = [p_x, p_y]
 
		screen.fill(black_color)
		pygame.draw.circle(screen, blue_color, position, radius)
		pygame.display.flip()
 
pygame.quit()

Mai multe exemple de folosire a pygame găsiți în documentația oficială.

Pachete utile pentru Python

Daca vreti sa va imbogatiti cunostintele (practice) de Python, va invitam sa explorati urmatoarele pachete:

programare/laboratoare/python.txt · Last modified: 2019/10/22 12:50 by george.pirtoaca
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0