Skip to content

Commit 474927b

Browse files
committed
Added programs code
1 parent dc6fb30 commit 474927b

File tree

11 files changed

+270
-0
lines changed

11 files changed

+270
-0
lines changed

code/Week 1/date.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import datetime
2+
import random
3+
day = random.choice(['Εικοστή πέμπτη', 25])
4+
try:
5+
date = day + ' Μαρτίου'
6+
except TypeError:
7+
date = datetime.date(1821, 3, day)
8+
else:
9+
date += ' 1821'
10+
finally:
11+
print(date)

code/Week 1/employee.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# employee example
2+
class Employee():
3+
''' Ο εργαζόμενος σε μια επιχείρηση '''
4+
def __init__(self, name, salary):
5+
self.name = name
6+
self.salary = salary
7+
8+
# main program
9+
the_employees = []
10+
while True:
11+
name = input('Όνομα:')
12+
if not name: break
13+
salary = input('Μισθός:')
14+
the_employees.append(Employee(name, salary))
15+
16+
# print the employees
17+
print('\nΟι υπάλληλοι είναι:')
18+
for employee in sorted(the_employees, key=lambda x: x.name):
19+
print(employee.name, employee.salary, sep='\t')

code/Week 1/ithaki.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Σα βγεις στον πηγαιμό για την Ιθάκη,
2+
να εύχεσαι νάναι μακρύς ο δρόμος,
3+
γεμάτος περιπέτειες, γεμάτος γνώσεις.
4+
Τους Λαιστρυγόνας και τους Κύκλωπας,
5+
τον θυμωμένο Ποσειδώνα μη φοβάσαι,
6+
τέτοια στον δρόμο σου ποτέ σου δεν θα βρεις,
7+
αν μέν’ η σκέψις σου υψηλή, αν εκλεκτή
8+
συγκίνησις το πνεύμα και το σώμα σου αγγίζει.
9+
Τους Λαιστρυγόνας και τους Κύκλωπας,
10+
τον άγριο Ποσειδώνα δεν θα συναντήσεις,
11+
αν δεν τους κουβανείς μες στην ψυχή σου,
12+
αν η ψυχή σου δεν τους στήνει εμπρός σου.
13+
14+
Να εύχεσαι νάναι μακρύς ο δρόμος.
15+
Πολλά τα καλοκαιρινά πρωιά να είναι
16+
που με τι ευχαρίστησι, με τι χαρά
17+
θα μπαίνεις σε λιμένας πρωτοειδωμένους·
18+
να σταματήσεις σ’ εμπορεία Φοινικικά,
19+
και τες καλές πραγμάτειες ν’ αποκτήσεις,
20+
σεντέφια και κοράλλια, κεχριμπάρια κ’ έβενους,
21+
και ηδονικά μυρωδικά κάθε λογής,
22+
όσο μπορείς πιο άφθονα ηδονικά μυρωδικά·
23+
σε πόλεις Aιγυπτιακές πολλές να πας,
24+
να μάθεις και να μάθεις απ’ τους σπουδασμένους.
25+
26+
Πάντα στον νου σου νάχεις την Ιθάκη.
27+
Το φθάσιμον εκεί είν’ ο προορισμός σου.
28+
Aλλά μη βιάζεις το ταξείδι διόλου.
29+
Καλλίτερα χρόνια πολλά να διαρκέσει·
30+
και γέρος πια ν’ αράξεις στο νησί,
31+
πλούσιος με όσα κέρδισες στον δρόμο,
32+
μη προσδοκώντας πλούτη να σε δώσει η Ιθάκη.
33+
34+
Η Ιθάκη σ’ έδωσε τ’ ωραίο ταξείδι.
35+
Χωρίς αυτήν δεν θάβγαινες στον δρόμο.
36+
Άλλα δεν έχει να σε δώσει πια.
37+
38+
Κι αν πτωχική την βρεις, η Ιθάκη δεν σε γέλασε.
39+
Έτσι σοφός που έγινες, με τόση πείρα,
40+
ήδη θα το κατάλαβες οι Ιθάκες τι σημαίνουν.

code/Week 1/letters.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Άσκηση 1.4
2+
# βρείτε τη συχνότητα εμφάνισης αλφαβητικών χαρακτήρων που βρίσκονται σε κείμενο
3+
# αρχείου που δίνει ο χρήστης
4+
freq = {}
5+
tonoi = {'ά': 'α', 'έ': 'ε', 'ή': 'η', 'ί': 'ι', 'ό': 'ο', 'ύ': 'υ', 'ώ': 'ω',
6+
'ΐ': 'ι', 'ΰ': 'υ', 'ϊ': 'ι', 'ϋ': 'υ'}
7+
try:
8+
fname = input('Όνομα αρχείου:')
9+
with open(fname, 'r', encoding='utf-8') as fin:
10+
txt = fin.read()
11+
# print(txt)
12+
for t in tonoi:
13+
txt = txt.lower().replace(t, tonoi[t])
14+
for ch in txt.lower():
15+
if ord('ώ') >= ord(ch) >= ord('ά'):
16+
freq[ch] = freq.get(ch, 0) + 1
17+
for ch in sorted(freq): print(ch, freq[ch])
18+
19+
except FileNotFoundError:
20+
print('δεν βρέθηκε το αρχείο')

code/Week 1/letters_re

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Άσκηση 1.4
2+
# βρείτε τη συχνότητα εμφάνισης αλφαβητικών χαρακτήρων που βρίσκονται σε κείμενο
3+
# αρχείου που δίνει ο χρήστης
4+
5+
import re
6+
freq = {}
7+
tonoi = {'ά':'α', 'έ':'ε', 'ή':'η', 'ί':'ι', 'ό':'ο', 'ύ':'υ', 'ώ':'ω',
8+
'ΐ': 'ι', 'ΰ':'υ', 'ϊ':'ι','ϋ':'υ'}
9+
while True:
10+
filename = input('όνομα αρχείου:')
11+
if filename == '': break
12+
try:
13+
with open(filename, 'r', encoding = 'utf-8') as fin:
14+
txt = fin.read()
15+
for letter in tonoi:
16+
txt = txt.lower().replace(letter, tonoi[letter])
17+
alpha = re.findall(r'[ά-ώ]', txt.lower(), re.I) #
18+
for a in alpha:
19+
freq[a] = freq.get(a,0) + 1
20+
total = sum(freq.values())
21+
for ch in sorted(freq.keys()):
22+
print(ch.upper(), ord(ch), freq[ch], '{:.1f}%'.format(100*freq[ch]/total))
23+
except FileNotFoundError:
24+
print('το αρχείο δεν βρέθηκε')

code/Week 1/student.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# κλάση Student
2+
class Student():
3+
"""ένα άτομο που σπουδάζει"""
4+
def __init__(self, name, age, origin=''):
5+
self.name = name
6+
self.age = int(age)
7+
self.origin = origin
8+
9+
def get_age(self):
10+
return str(self.age) + ' χρονών'
11+
12+
# ορισμός αντικειμένων τύπου Student
13+
s1 = Student('Ορέστης',22,'Βόλος')
14+
s2 = Student('Μαρία',19,'Σπάρτη')
15+
s3 = Student('Ζωή', 20)
16+
s4 = Student('Κώστας', 21)
17+
print(s1.name)
18+
print(s1.get_age())

code/Week 2/card.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Card:
2+
'''κλάση φύλλων τράπουλας'''
3+
gr_names = {'s': 'Σπαθί ♣', 'c': 'Μπαστουνι ♠', 'h': 'Κούπα ♥', 'd': 'Καρό ♦',
4+
'A': 'Άσσος', '2': 'Δύο', '3':'Τρία', '4':'Τέσσερα', '5':'Πέντε', '6':'Έξι', '7':'Επτά', '8':'Οκτώ',
5+
'9': 'Εννιά', 'T': 'Δέκα', 'J': 'Βαλές', 'Q':'Ντάμα', 'K': 'Ρήγας'}
6+
the_cards = []
7+
def __init__(self, value, symbol):
8+
self.value = value.upper().strip()
9+
self.symbol = symbol.lower().strip()
10+
Card.the_cards.append(self)
11+
12+
def __str__(self):
13+
return self.value+self.symbol
14+
def detailed_info(self):
15+
if self.value in Card.gr_names and self.symbol in Card.gr_names:
16+
return Card.gr_names[self.value]+ ' ' + Card.gr_names[self.symbol]
17+
else: return ''
18+
# main program
19+
if __name__ == '__main__':
20+
while True:
21+
card = input('δώσε φύλλο (αξία, σύμβολο):')
22+
if card =='': break
23+
if card.count(',') == 1 and card.split(',')[0].upper() in 'A123456789TJQK' and card.split(',')[1].lower() in 'cshd':
24+
Card(*card.split(','))
25+
for c in Card.the_cards:
26+
print(c, c.detailed_info())

code/Week 2/employee_v2.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# employee example
2+
class Employee():
3+
''' Ο εργαζόμενος σε μια επιχείρηση '''
4+
the_employees = []
5+
def __init__(self, name, salary):
6+
self.name = name
7+
self.salary = salary
8+
Employee.the_employees.append(self)
9+
10+
# main program
11+
12+
while True:
13+
name = input('Όνομα:')
14+
if not name: break
15+
salary = input('Μισθός:')
16+
Employee(name, salary)
17+
18+
# print the employees
19+
print('\nΟι υπάλληλοι είναι:')
20+
for employee in sorted(Employee.the_employees, key=lambda x: x.name):
21+
print(employee.name, employee.salary, sep='\t')

code/Week 2/point.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Point():
2+
''' ένα σημείο στο καρτεσιανό επίπεδο '''
3+
the_points = []
4+
def __init__(self, x=0, y=0):
5+
self.x = int(x)
6+
self.y = int(y)
7+
Point.the_points.append(self)
8+
9+
def distance(self, p):
10+
return ((self.x - p.x)**2 + (self.y - p.y)**2 )**0.5
11+
12+
# main program
13+
while True:
14+
coords = input('Συντεταγμένες νέου σημείου (x,y) :')
15+
if coords =='': break
16+
if coords.count(',') != 1 : continue
17+
x,y = coords.split(',')
18+
if x.isdigit() and y.isdigit():
19+
new_point = Point(x,y)
20+
print('Υπάρχουν συνολικά {} σημεία'.format(len(Point.the_points)))
21+
for p in Point.the_points:
22+
if p != new_point:
23+
print('Το σημείο (χ={}, y={}) είναι σε απόσταση {:.2f} από το σημείο'.format(p.x, p.y, p.distance(new_point)))

code/Week 2/point_v2.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Point():
2+
''' ένα σημείο στο καρτεσιανό επίπεδο '''
3+
the_points = []
4+
5+
def __init__(self, x=0, y=0):
6+
self.x = int(x)
7+
self.y = int(y)
8+
Point.the_points.append(self)
9+
10+
def distance(self, p):
11+
return ((self.x - p.x) ** 2 + (self.y - p.y) ** 2) ** 0.5
12+
13+
def __str__(self):
14+
return '(' + str(self.x) + ',' + str(self.y) + ')'
15+
16+
17+
# main program
18+
while True:
19+
coords = input('Συντεταγμένες νέου σημείου (x,y) :')
20+
if coords == '': break
21+
if coords.count(',') != 1: continue
22+
x, y = coords.split(',')
23+
if x.isdigit() and y.isdigit():
24+
new_point = Point(x, y)
25+
print('Υπάρχουν συνολικά {} σημεία'.format(len(Point.the_points)))
26+
for p in Point.the_points:
27+
if p != new_point:
28+
print('Το σημείο {} είναι σε απόσταση {:.2f} από το σημείο {}'.format(p, p.distance(new_point), new_point))

0 commit comments

Comments
 (0)