Python tunnis tehtud näited: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Jtammeka (talk | contribs)
No edit summary
Jtammeka (talk | contribs)
No edit summary
Line 505: Line 505:


</source>
</source>
<br>


<source lang="python">
<source lang="python">

Revision as of 13:33, 25 March 2014

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Johannes Tammekänd - A22, 18.03.2014
# Programm mis võtab käsurea argumendina sisendfaili ning leiab sellest 
# sisendfailist kõige pikima sõna ja väljastab selle sõna koos reanumbriga.

import sys

if len(sys.argv) != 2:
	print "Argumentide arv on vale!"
	print "Kasuta programmi ", sys.argv[0], "sisendfail"
	sys.exit(1)

try:
	pikim = open(sys.argv[1], 'r')
	lookup = max(pikim, key = len)
	lookup = max(lookup.split(), key=len)
	print lookup
except IOError: 
	print "Sisendfaili ei saa avada."

with open(sys.argv[1]) as minuFail:
	for num, line in enumerate(minuFail, 1):
		if lookup in line:
			print 'Sõna oli real:', num



print "Programm lõpetas töö"


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Johannes Tammekänd - A22, 18.03.2014
# Programm avab faili, leiab sealt kõige pikema rea ning väljastab selle.


import sys

if len(sys.argv) != 2:
	print "Argumentide arv on vale!"
	print "Kasuta programmi ", sys.argv[0], "sisendfail"
	sys.exit(1)

try:
	pikim = open(sys.argv[1], 'r')
	lookup = max(pikim, key = len)
	print lookup
except IOError: 
	print "Sisendfaili ei saa avada."


print "Programm lõpetas töö"


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Programm avab faili, leiab sealt kõige pikema rea ning väljastab selle
# Autor: Karl-Martin Karlson

from __future__ import print_function

import sys

#Kontrollib käsurea argumentide arvu

if len(sys.argv) != 2:
    print("Argumentide arv on vale!")
    print("Kasuta programmi", sys.argv[0], "sisendfail")
    sys.exit(1)

failinimi = sys.argv[1]


try:
    ifh = open(sys.argv[1], 'r')
except I0Error:
    print("Faili ei saanud avada")
    sys.exit(1)
    
reapikkus = 0
pikimrida = "Tere"

ifh=open(failinimi)
while True:
    line = ifh.readline()
    if reapikkus < len(line):
        reapikkus = len(line)
        pikimrida = line       
    if not line:
        break
ifh.close()
print (pikimrida)


#!/usr/bin/env python
# -*- coding: utf-8  -*-
# Skript kontrollib argumentide arvu, avab argumendina antud faili(kontrollides eelnevalt selle
# olemasolu ning õiguseid sellest lugemiseks) ning seejärel prindib pikima rea välja.
# Autor: Marten Mattisen
import sys
if (len(sys.argv) != 2):
    print ("Argumentide arv on vale!")
    sys.exit(2)
try:
    print "Pikim rida:"+max(open(sys.argv[1], 'r'), key=len)
except IOError:
    print 'Sisendfail on puudu või pole sellest lugemiseks õiguseid'
    sys.exit(1)
print 'Skript on töö lõpetanud.'


#!/usr/bin/python
# -*- coding: utf-8 -*-
# Tere täpiline kommentaar
import sys

print sys.argv[0], sys.argv[1]
print 'Tere maailm!'

muutuja = 5

teine_muutuja = 2.0

print 'jagatis on', muutuja/teine_muutuja
print 'Palun sisesta midagi'
vastus = int(raw_input())

print 'sisestasid', vastus/2.0

if vastus%2 == 0:
    print 'vastus on paarisarv'
else:
    print 'vastus on paaritu arv'
    
for i in range(1,9999):
    print 'i =',i
    
while True:
    print "sisesta midagi"
    a = raw_input()
    if a == 'q':
        print 'programm lõpetas töö'
        sys.exit(0)

Pythoni programm, mis kontrollib, kas arv jagub 10-ga

#!/usr/bin/python
# -*- coding: utf-8 -*-

while True:
    print 'Kirjuta mingi arv, mis jagub 10ga'
#raw_input annab stringi, see on vaja teha integer tüüpi
    kasutajaarv = int(raw_input())
    if kasutajaarv%10 == 0:
        break

print 'Jagus! Programm lõpetab!'

Skript väljastab esmalt argumentide arvu ja argumendid (iga argument eraldi real)

#!/usr/bin/python
# -*- coding: utf-8 -*-
#loo skript, mis saab käsurealt 0..n argumenti
#skript väljastab esmalt argumentide arvu ja argumendid (iga argument eraldi real)

import sys

print 'argumentide arv:', len(sys.argv)

for i in sys.argv:
     print "Argument: ", i

Pythoni programm, mis väljastab ainult paaritud argumendid

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Loo skript mis saab käsurealt 0..n argumenti
#väljastab kõik paaritud argumendid (iga argument eraldi real)

import sys

for i in sys.argv[1:]:
    if int(i)%2 == 0:
        pass
    else:
        print 'Paaritu argument: ', i

Pythoni programm, mis kirjutab faili, kus on 1000 rida ja igal real on juhuarv 1..1000

#!/usr/bin/python
# -*- coding: utf-8 -*-

import random
fo = open("fail.txt", 'w')

for x in range(1, 1001):
	ran=str(random.randrange(1,1000+1))	
	fo.write(ran+'\n')

fo.close()

Skript sorteerib fail.txt-s olevad numbrid ja väljastab uute faili

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Skript sorteerib fail.txt-s olevad numbrid ja väljastab 
# uute faili

fo = open("fail.txt", "r" )
fo2 = open("sorteeritud.txt", 'w')

lines = fo.readlines()
results = map(int, lines)

results.sort()

for item in results:
  fo2.write("%s\n" % item)

fo.close()
fo2.close()

Skript sorteerib fail.txt-s olevad numbrid ja väljastab uute faili

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Skript sorteerib fail.txt-s olevad numbrid ja väljastab 
# uute faili
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys

f = open(sys.argv[1], 'r')
lines = f.readlines()
lines.sort(key = int)


f = open('uusfail3.txt', 'w')
for number in lines:
	f.write(number)
f.close


Skript sorteerib fail.txt-s olevad numbrid ja väljastab ainult unikaalsed numbrid

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Skript sorteerib fail.txt-s olevad numbrid ja väljastab ainult
# unikaalsed numbrid

fo = open("fail.txt", "r" )
fo2 = open("unikaalsed.txt", 'w')

lines = fo.readlines()
results = map(int, lines)

results2 = list(set(results))
results2.sort()

for item in results2:
  fo2.write("%s\n" % item)

fo.close()
fo2.close()

Skript, mis tagastab käsurealt etteantud kasutaja UID

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from pwd import getpwnam
print getpwnam(sys.argv[1]).pw_uid

Skript, mis väljastan NxN ühikmaatriksi

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Väljastab NxN ühikmaatriksi

import sys
import numpy as np

n = float(sys.argv[1])

print np.identity(n)

Skript loeb etteantud teksti failist ridade, sõnade ja tähemärkide arvu

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Skript loeb etteantud teksti failist ridade, sõnade ja tähemärkide arvu
from sys import argv

if len(argv) < 2:
    print "Sa ei sisestanud ühtegi argumenti, mida kontrollida"
    exit(1)
    
fh=open(argv[1])
read = fh.readlines()

sonad = 0
tahed = 0
for rida in read:
    tahed = tahed + len(rida)
    sonad = sonad + len(rida.split())

print "Ridu:" , len(read)
print "Sonu:" , sonad
print "Tähti:" , tahed

fh.close()

Skript loeb etteantud teksti failist ridade, sõnade ja tähemärkide arvu

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Tee skript, mis leiab käsurealt etteantud tekstifaili
# ridade arvu, tähtede arvu ja sõnade arvu ja väljastab ekraanile

import sys

f = open(sys.argv[1], "r" )

lines = f.readlines()
count = 0
sonad = 0


for i in range(0,len(lines)):
    count = count + len(lines[i])
    sonad = sonad + len(lines[i].split(" "))
    
print "Ridu:", len(lines)
print "Tähemärke:", count
print "Sõnu:", sonad

f.close()

Skript kirjutab tekstifaili 100 rida rea numbrite ja random sisuga, komadega eraldatult

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Tee skript, mis kirjutab komadega eraldatud tekstifaili 100 rida, igas reas järgnev info:
# rea nr, random nr 1..100, random märk pikkusega 0..32

import sys
import random
import string

f = open(sys.argv[1], "w" )

for i in range(1, 101):
    ran=str(random.randrange(1,100+1))	
    f.write(str(i)+',')
    f.write(ran+',')
    for j in range(1,random.randrange(1,32+1)):
        f.write(random.choice(string.ascii_letters))
    f.write('\n')
 
f.close()

Skript kirjutab ette antud faili 100 rida. Igal real on rea number, suvaline number 1 ja 100 vahel ja suvaline tähemärk, mis on komadega eraldatud

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Skript kirjutab ette antud faili 100 rida. Igal real on rea number, suvaline number 1 ja 100 vahel ja suvaline tähemärk, mis on komadega eraldatud
from sys import argv
from random import randint
import random
letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

if len(argv) < 2:
    print "Sa ei sisestanud ühtegi argumenti, mida kontrollida"
    exit(1)
    
fh=open(argv[1], "w")

sonad = 0
tahed = 0
for rida in range(100):
    fh.write(str(rida+1) + "," + str(randint(1, 101)) + "," + random.choice(letters) + "\n")
    
fh.close()

Skript saadab meili kasutades smtplib teeki ning on praktiliselt identne StackOverflow lehel asuva koodiga, mille leiab sõnumi sisust.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Üllar Seerme, A21
# 25.03.14
import smtplib

FROM = ""
TO = [""]

SUBJECT = "Hello World!"
TEXT = "Greetings from http://stackoverflow.com/questions/6270782/sending-email-with-python"

MESSAGE = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

server = smtplib.SMTP("mail.itcollege.ee")
server.sendmail(FROM, TO, MESSAGE)
server.quit()

skript saadab meili kasutades smtplib teeki. Süntaksi sain tutorialspoint.com dokumentatsioonidest.

#!/usr/bin/python
#A21 Juri Kononov Ilma autentimist meili saatmine
import smtplib

smtplib.SMTP('mail.itcollege.ee').sendmail('kellelt@itcollege.ee', 'kellele@itcollege.ee', "emaili sisu")


#!/usr/bin/python
# -*- coding: utf-8 -*-
# Autor: Karl-Martin Karlson
# Rühm: A21
# Skript saadab enda sisu valitud meili aadressile

import smtplib

with open(__file__) as f:
    msg = f.read()

print "Message length is " + repr(len(msg))


server = smtplib.SMTP("172.16.0.160", 25)
server.sendmail("saatja@itcollege.ee", "saaja@itcollege.ee", msg)
server.quit()
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Skript läheb ette antud veebilehele ning kopeerib
# kõik leitud URlid lingid.txt faili

import urllib2
import re
import sys

if len(sys.argv) != 2:
    print("Argumentide arv on vale!")
    print("Kasuta programmi", sys.argv[0], "sisendfail")
    sys.exit(1)
    
url = sys.argv[1]
f = open('lingid.txt','w')

page = urllib2.urlopen(url)
page = page.read()
links = re.findall(r"<a.*?\s*href=\"(.*?)\".*?>(.*?)</a>", page)

for link in links:
    f.write('%s \n' % (link[0]))

f.close()


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Johannes Tammekänd - A22 - 25.03.14
# Leiab etteantud URL'ist kõik lingid lähtekoodist.

import urllib2
import sys

if len(sys.argv) != 2:
  print "Argumentide arv on vale!"
  print "Kasuta programmi ", sys.argv[0], "http://www.veebiaadress.com"
  sys.exit(1)


from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen(sys.argv[1])
soup = BeautifulSoup(page.read())
links = soup.findAll("a")
for link in links:
    print link["href"]