Seminář programování v Pythonu na PORGu - lekce 5


Opakování z minulé lekce

Pythonovský program jako skript; hlavička, komentář, docstring

Otevření souboru pro čtení, pro zápis, zavření souboru

For cyklus přes dvojice hodnot

Opravené testy

Přehled toho, co už z pythonu3 známe

1) klíčová slova

if elif else 						# podmíněný kód
not or and							# logické operace
False True None						# konstanty "nepravda", "pravda", "neexistující objekt"
while for in break continue			# cykly
def return	pass					# funkce
del 								# zničení objektu 

import from as						# načítání modulů

try raise assert except finally		# (budoucnost) zachytávání/hlášení chyb
class yield lambda with is	global nonlocal     # (budoucnost, zbytek)

3) zabudované konstanty

http://docs.python.org/release/3.1.3/library/constants.html

2) zabudované funkce

http://docs.python.org/release/3.1.3/library/functions.html

Úkol na číslování řádků od Davida Roesela

Původní zadání úkolu: Napište tentokrát program, který načte soubor "vstup.txt", očísluje mu řádky a vypíše ho do "vystup.txt". Nápověda: k doplnění uvozujících nul (leading zeros) na čtyřmístné číslo použijte funkci format(číslo, '04d').

#!/usr/bin/env python3
'''
Číslovač řádků
----
Verze: 1
Autor: David Roesel, roesel@gmail.com (..)
'''
pocet_radku=0 # Zde si držím číslo aktuálního řádku
zapis="" # Zde si držím string, který budu na konci scriptu
         # zapisovat do nového (nebo toho samého) souboru

f=open("input.txt") # Otevírám soubor ze kterého budu číst
for line in f.readlines(): # Každou jeho řádku si přečtu, očísluju a znovu uložím
    pocet_radku+=1
    zapis+=str(format(pocet_radku, '03d')) + " " + str(line)
f.close() # Soubor nezapomenu zavřít

g=open("output.txt", "w") # Otevírám soubor do kterého budu zapisovat
g.write(zapis) # Zapisuji a zavírám
g.close()

Doplnění: otevření souboru v režimu přidávání řádků

otevreny_soubor = open("nic.txt","a")   # otevření souboru v režimu přidávání (append)
otevreny_soubor.write("prvni_radek\n")
otevreny_soubor.close()

otevreny_soubor = open("nic.txt","a")   # otevření souboru v režimu přidávání  znovu
otevreny_soubor.write("druhy_radek\n")
otevreny_soubor.close()

modul math - matematické funkce

import math
math.sin(math.pi/3)
math.log(32,2)
math.log(1000,10)
math.log(1e15,10)

Pozn. existují i mnohem pokročilejší moduly na práci s matematikou: např. scipy pro vědecké výpočty (práce s vektory a maticemi, fitování dat funkcí, simulace fyzikálních systémů atp.), numpy (odlehčená verze scipy) matplotlib (kreslení kvalitních grafů), sympy (symbolické počítání, úpravy výrazů).

Načtení modulu

1. Načtení modulu příkazem import math ; přístup k funkcím modulu jako math.cos() atd.

2. Načtení modulu příkazem from math import cos; přístup k funkcím modulu jako cos() atd.

modul random - náhodná čísla

import random
random.random()
random.randint(0,5)

modul time - zjišťování času, čekání apod.

time.sleep(secs)

time.time()

time.gmtime()
time.gmtime(time.time())

time.strftime("%d. %m. %Y v %H:%M:%S")
time.strftime("%d. %m. %Y v %H:%M:%S", time.gmtime(time.time()))

Měření času:

a=time.time(); time.sleep(3); print(time.time()-a)
Pozn. existuje i modul datetime, který poskytuje pokročilejší funkce pro práci s datem.

modul os - vytváření a mazání adresářů

os.mkdir('smazme')
os.remove('/home/filip/nic.txt')
os.removedirs('smazme')

modul shutil - kopírování, přesouvání a zipování souborů/adresářů

otevreny_soubor = open("nic.txt","a")   # otevření souboru v režimu přidávání (append)
close(otevreny_soubor)

import shutils
shutils.copy("nic.txt", "nic2.txt")

shutil.copytree(src, dst[, symlinks=False[, ignore=None]])
hutil.make_archive(base_name, 'zip')

modul sys - funkce systému a pythonovského interpreteru

sys.argv     # parametry předané programu

sys.platform    # na jakém operačním systému je python spuštěn?

sys.version    # verze pythonu

Zpět na obsah | Poslední úprava: 2011-10-17