class Araba: # Ορισμός κλάσης
def __init__(self, marka, model, yil): # Κατασκευαστής
self.marka = marka
self.model = model
self.yil = yil
self.km = 0 # Προεπιλεγμένη ιδιότητα
def bilgi_ver(self): # Μέθοδος
return f"{self.yil} {self.marka} {self.model}, KM: {self.km}"
def sur(self, km):
self.km += km
# Δημιουργία αντικειμένων
araba1 = Araba("Toyota", "Corolla", 2020)
araba2 = Araba("BMW", "3 Serisi", 2022)
print(araba1.bilgi_ver()) # 2020 Toyota Corolla, KM: 0
araba1.sur(150)
print(araba1.bilgi_ver()) # 2020 Toyota Corolla, KM: 150class BankaHesabi:
def __init__(self, sahip, bakiye=0):
self.sahip = sahip
self.__bakiye = bakiye # Ιδιωτική
def para_yatir(self, miktar):
self.__bakiye += miktar
print(f" {miktar} € κατατέθηκαν.") # Μεταφρασμένο σε ευρώ για παράδειγμα
def para_cek(self, miktar):
if self.__bakiye >= miktar:
self.__bakiye -= miktar
print(f" {miktar} € αναλήφθηκαν.")
else:
print("Ανεπαρκές υπόλοιπο!")
def bakiye_sorgula(self):
return self.__bakiye
hesap = BankaHesabi("Ahmet", 1000)
hesap.para_yatir(500)
hesap.para_cek(200)
print(hesap.bakiye_sorgula()) # 1300
# print(hesap.__bakiye) # Σφάλμα (μη προσβάσιμο)class Arac: # Γονική/Βασική κλάση
def __init__(self, marka):
self.marka = marka
def calistir(self):
print(f"{self.marka} λειτουργεί.")
class Araba(Arac): # Παιδική/Παράγωγη κλάση
def __init__(self, marka, model):
super().__init__(marka) # Κλήση κατασκευαστή γονέα
self.model = model
def bilgi(self):
print(f"{self.marka} {self.model}")
class Motosiklet(Arac):
def __init__(self, marka):
super().__init__(marka)
def tekerlek_sayisi(self):
return 2
araba = Araba("Honda", "Civic")
araba.calistir() # Honda λειτουργεί.
araba.bilgi() # Honda Civicclass UcanAraba(Araba, Ucabilir): # Υποθέτουμε ότι υπάρχει κλάση Ucabilir
passclass Kopek:
def ses_cikar(self):
print("Γαβ γαβ!")
class Kedi:
def ses_cikar(self):
print("Νιάου!")
def hayvan_ses(hayvan):
hayvan.ses_cikar() # Πολυμορφισμός
hayvanlar = [Kopek(), Kedi()]
for h in hayvanlar:
hayvan_ses(h)
# Έξοδος:
# Γαβ γαβ!
# Νιάου!from abc import ABC, abstractmethod
class Sekil(ABC): # Αφηρημένη βασική κλάση
@abstractmethod
def alan(self):
pass
class Dikdortgen(Sekil):
def __init__(self, en, boy):
self.en = en
self.boy = boy
def alan(self):
return self.en * self.boy
# sekil = Sekil() # Σφάλμα: Η αφηρημένη κλάση δεν μπορεί να δημιουργηθεί απευθείας
d = Dikdortgen(5, 10)
print(d.alan()) # 50class Kitap:
def __init__(self, baslik, yazar):
self.baslik = baslik
self.yazar = yazar
def __str__(self): # Για print()
return f" {self.baslik} - {self.yazar}"
def __len__(self): # Για len()
return len(self.baslik)
def __add__(self, other): # Για + τελεστή
return f" {self.baslik} και {other.baslik}"
kitap1 = Kitap("1984", "George Orwell")
kitap2 = Kitap("Hayvan Çiftliği", "George Orwell")
print(kitap1) # 1984 - George Orwell
print(len(kitap1)) # 4
print(kitap1 + kitap2) # 1984 και Hayvan Çiftliğiclass Personel:
def __init__(self, isim):
self._isim = isim
@property
def isim(self):
return self._isim
@isim.setter
def isim(self, yeni):
if len(yeni) > 0:
self._isim = yeniclass Matematik:
@classmethod
def pi(cls):
return 3.14159
@staticmethod
def topla(a, b):
return a + b# Ανάγνωση αρχείου κειμένου
with open("ornek.txt", "r", encoding="utf-8") as dosya:
icerik = dosya.read()
print(icerik)with open("buyuk_dosya.txt", "r", encoding="utf-8") as dosya:
for satir in dosya:
print(satir.strip()) # strip() για να καθαρίσει τα κενά στην αρχή/τέλοςwith open("dosya.txt", "r", encoding="utf-8") as dosya:
ilk_bes_satir = dosya.readlines()[:5]# Δημιουργία νέου αρχείου και γραφή
with open("yeni_dosya.txt", "w", encoding="utf-8") as dosya:
dosya.write("Αυτή είναι η πρώτη γραμμή.\n")
dosya.write("Αυτή είναι η δεύτερη γραμμή.\n")
# Προσθήκη σε υπάρχον αρχείο
with open("yeni_dosya.txt", "a", encoding="utf-8") as dosya:
dosya.write("Αυτή είναι η προστεθείσα γραμμή.\n")satirlar = ["Γραμμή 1\n", "Γραμμή 2\n", "Γραμμή 3\n"]
with open("dosya.txt", "w", encoding="utf-8") as dosya:
dosya.writelines(satirlar)import csv
# Γραφή CSV
with open("veriler.csv", "w", newline="", encoding="utf-8") as dosya:
yazar = csv.writer(dosya)
yazar.writerow(["Όνομα", "Ηλικία", "Πόλη"])
yazar.writerow(["Γιάννης", 30, "Αθήνα"])
yazar.writerow(["Μαρία", 25, "Θεσσαλονίκη"])
# Ανάγνωση CSV
with open("veriler.csv", "r", encoding="utf-8") as dosya:
okuyucu = csv.reader(dosya)
for satir in okuyucu:
print(satir)try:
with open('olmayan_dosya.txt', "r", encoding="utf-8") as dosya:
print(dosya.read())
except FileNotFoundError:
print("Το αρχείο δεν βρέθηκε!")
except PermissionError:
print("Δεν υπάρχει άδεια πρόσβασης στο αρχείο!")
except Exception as e:
print(f"Απροσδόκητο σφάλμα: {e}")<!DOCTYPE html>
<html lang="el">
<head>
<meta charset="UTF-8">
<title>Απλός Πίνακας HTML</title>
</head>
<body>
<table border="1">
<tr>
<th>Όνομα</th>
<th>Ηλικία</th>
<th>Πόλη</th>
</tr>
<tr>
<td>Νίκος</td>
<td>25</td>
<td>Αθήνα</td>
</tr>
<tr>
<td>Μαρία</td>
<td>30</td>
<td>Θεσσαλονίκη</td>
</tr>
</table>
</body>
</html><!DOCTYPE html>
<html lang="el">
<head>
<meta charset="UTF-8">
<title>Προηγμένος Πίνακας HTML</title>
<style>
table {
width: 80%;
margin: 20px auto;
border-collapse: collapse;
font-family: Arial, sans-serif;
}
th, td {
border: 1px solid #ccc;
padding: 10px;
text-align: center;
}
th {
background-color: #4CAF50;
color: white;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<table>
<tr>
<th colspan="2">Πληροφορίες Προϊόντος</th>
<th>Τιμή</th>
</tr>
<tr>
<td>Μήλα</td>
<td>Κόκκινα</td>
<td>1,20€/κιλό</td>
</tr>
<tr>
<td rowspan="2">Πορτοκάλια</td>
<td>Ναβαλ</td>
<td>1,50€/κιλό</td>
</tr>
<tr>
<td>Μανταρίνια</td>
<td>0,90€/κιλό</td>
</tr>
</table>
</body>
</html><?php
function countVisitors() {
static $visitorCount = 0; // Στατική μεταβλητή
$visitorCount++; // Αυξάνουμε τον μετρητή
// Έλεγχος συνθήκης
if ($visitorCount == 1) {
echo "Καλώς ήρθες! Είσαι ο πρώτος επισκέπτης!";
} else {
echo "Αριθμός επισκέψεων: $visitorCount";
}
}
// Κλήση της συνάρτησης πολλές φορές
countVisitors(); // Εμφανίζει: Καλώς ήρθες! Είσαι ο πρώτος επισκέπτης!
echo "<br>";
countVisitors(); // Εμφανίζει: Αριθμός επισκέψεων: 2
echo "<br>";
countVisitors(); // Εμφανίζει: Αριθμός επισκέψεων: 3
?><?php
function validateUser($username) {
static $attempts = 0; // Καταγράφουμε τις προσπάθειες
$attempts++;
// Έλεγχος εισόδου
if (empty($username)) {
return "Παρακαλώ εισάγετε όνομα χρήστη. Προσπάθειες: $attempts";
} elseif (strlen($username) < 3) {
return "Το όνομα χρήστη πρέπει να έχει τουλάχιστον 3 χαρακτήρες. Προσπάθειες: $attempts";
} else {
return "Καλώς ήρθες, $username! Προσπάθειες: $attempts";
}
}
// Δοκιμές
echo validateUser(""); // Εμφανίζει: Παρακαλώ εισάγετε όνομα χρήστη. Προσπάθειες: 1
echo "<br>";
echo validateUser("ab"); // Εμφανίζει: Το όνομα χρήστη πρέπει να έχει τουλάχιστον 3 χαρακτήρες. Προσπάθειες: 2
echo "<br>";
echo validateUser("Nikos"); // Εμφανίζει: Καλώς ήρθες, Nikos! Προσπάθειες: 3
?>def xairetismos(όνομα):
return f"Γειά σου, {όνομα}!"
# Κλήση της συνάρτησης
print(xairetismos("Μαρία")) # Έξοδος: Γειά σου, Μαρία!def ypologismos_posou(τιμή, φόρος=0.24):
τελικό_ποσό = τιμή * (1 + φόρος)
return f"Το τελικό ποσό είναι: {τελικό_ποσό:.2f}€"
print(ypologismos_posou(100)) # Έξοδος: Το τελικό ποσό είναι: 124.00€
print(ypologismos_posou(100, 0.10)) # Έξοδος: Το τελικό ποσό είναι: 110.00€def synoliko_arithmo(*args):
return sum(args)
def plirofories_pelati(**kwargs):
for klidi, timi in kwargs.items():
print(f"{klidi}: {timi}")
# Κλήση συναρτήσεων
print(synoliko_arithmo(1, 2, 3, 4)) # Έξοδος: 10
plirofories_pelati(όνομα="Γιάννης", ηλικία=30, πόλη="Αθήνα")
# Έξοδος:
# όνομα: Γιάννης
# ηλικία: 30
# πόλη: Αθήνα# Παράδειγμα: Υπολογισμός τετραγώνου
tetragono = lambda x: x ** 2
print(tetragono(5)) # Έξοδος: 25
# Χρήση με filter
arithmoi = [1, 2, 3, 4, 5, 6]
monoi = list(filter(lambda x: x % 2 != 0, arithmoi))
print(monoi) # Έξοδος: [1, 3, 5]def prosthesi(a, b):
"""Προσθέτει δύο αριθμούς και επιστρέφει το άθροισμα."""
return a + bandroid {
...
buildFeatures {
dataBinding true
}
}<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="user"
type="com.example.User" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/nameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}" />
</LinearLayout>
</layout>package com.example
data class User(val name: String)import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.databinding.ActivityMainBinding // Αυτόματη δημιουργία από το Data Binding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// Ορισμός δεδομένων
val user = User("Πέτρος")
binding.user = user
}
}import androidx.databinding.ObservableField
class User {
val name = ObservableField<String>()
constructor(name: String) {
this.name.set(name)
}
}class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val user = User("Μαρία")
binding.user = user
// Ενημέρωση δεδομένων μετά από 2 δευτερόλεπτα
Handler(Looper.getMainLooper()).postDelayed({
user.name.set("Αννα")
}, 2000)
}
}