EEM-241 İleri Düzey Programlama
2024-2025 Güz Dönemi
Ders 4 - Python Programlama
Python kurmak için
- https://www.python.org/ sitesinden Python indirilebilir.
- (Önerilen) https://www.anaconda.com/download/success sitesinde Anaconda paketi indirilebilir. Bu durumda Python ile birlikte gerekli olabilecek başka programların kurulması da sağlanır.
Python programı yazmak için aşağıdaki yöntemlerden bir tanesi tercih edilebilir:
- Not defterine program yazılır py uzantısı ile kaydedilir (Örneğin program.py). Komut penceresinden
python program.pykomutu ile program çalıştırılır. - VSCode, Spyder, PyCharm gibi gelişmiş programlama ortamları kullanılır.
- Jupyter Notebook, Jupyter Lab (derste bu kullanılacak) gibi bilgisayarda çalışan veya Google Colab gibi uzaktan çalışan jupyter türevi sistemler kullanılabilir.
Jupyter Lab kullanımı:
- Hücrelerdeki kodları Pythona gönderir sonucu hücrenin altına yazdırır.
- Hücrenin üzerine çift tıklayarak veya ENTER tuşu ile edit moduna geçilir.
- ESC’ye basılarak veya hücrenin soluna tıklayarak komut moduna geçilir.
- Hücre seçili iken;
- Ctrl+Enter (Çalıştır ve hücrede kal),
- Shift+Enter (Çalıştır ve aşağıdaki hücreye geç) veya
- Alt+Enter (Çalıştır ve aşağıda hücre ekle) ile hücredeki kodlar çalıştırılır.
- Komut modunda iken
- C: hücreyi kopyalar,
- X: hücreyi keser,
- V: hücreyi yapıştırır,
- D D: hücreyi siler,
- 0 0: Arka planda çalışan Python çekirdeğini yeniden başlatır,
- A: yukarı hücre ekler,
- B: aşağı hücre ekler.
Değişken Türleri
a=1
b=2
c=a+b
print(c)
c=1
a+b
3
3
a=1
type(a)
int
Python nesne yönelimli bir programlama dilidir. Bundan dolayı pythonda her şey bir nesnedir. Örneğin tamsayı sınıfı için kullanılabilecek fonksiyonlar
dir(int)
['__abs__',
'__add__',
'__and__',
'__bool__',
'__ceil__',
'__class__',
'__delattr__',
'__dir__',
'__divmod__',
'__doc__',
'__eq__',
'__float__',
'__floor__',
'__floordiv__',
'__format__',
'__ge__',
'__getattribute__',
'__getnewargs__',
'__gt__',
'__hash__',
'__index__',
'__init__',
'__init_subclass__',
'__int__',
'__invert__',
'__le__',
'__lshift__',
'__lt__',
'__mod__',
'__mul__',
'__ne__',
'__neg__',
'__new__',
'__or__',
'__pos__',
'__pow__',
'__radd__',
'__rand__',
'__rdivmod__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rfloordiv__',
'__rlshift__',
'__rmod__',
'__rmul__',
'__ror__',
'__round__',
'__rpow__',
'__rrshift__',
'__rshift__',
'__rsub__',
'__rtruediv__',
'__rxor__',
'__setattr__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'__truediv__',
'__trunc__',
'__xor__',
'as_integer_ratio',
'bit_length',
'conjugate',
'denominator',
'from_bytes',
'imag',
'numerator',
'real',
'to_bytes']
a=1.0
type(a)
float
a="isim soyisim"
type(a)
str
Değişken tanımlama
Değişken isimlendirme kuralları ve önerileri
- Değişkenler numara başlayamaz: 1a hatalı, a1 doğru
- Değişken kelimeleri arasında boşluk bırakılmaz, boşluk yerine _ kullanılır: “bir değişken” hatalı, bir_degisken doğru
- Python anahtar kelimeleri değişken olarak kullanılmamalıdır. print=1 hatalı, print_=1 şeklinde kullanılabilir.
- Anlamlı değişken isimleri kullanmak faydalı olur. t=0 yerine toplam=0 gibi.
a_1=1
a_1
1
# yorum satırı için # sembolu kullanılır
jupyter de kısayolu Ctrl+/ dir
a=1
A=2
# python büyük küçük harf duyarlıdır
a, A
(1, 2)
print fonksiyonu
print("merhaba", end=" ")
print("merhaba")
print("merhaba")
merhaba merhaba
merhaba
print(a,b,c, sep="-")
1-2-1
help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
a=1
b=2
print(a,b)
print(a,b)
1 2
1 2
print("abc\ndef\nghi")
print("abc\n\tdef\n\tghi")
abc
def
ghi
abc
def
ghi
a=1
b=2
c=a+b
print(a,"+",b,"=",c)
print(f"{a}+{b}={c}")
metin = f"{a}+{b}={c}"
print(metin)
print(f"{a}+{b}={a+b}")
1 + 2 = 3
1+2=3
1+2=3
1+2=3
string türü
a="isim soyisim"
a.upper()
'ISIM SOYISIM'
Bir nesne ile ilgili kullanılabilecek fonksiyonlara dir fonksiyonu ile bakılabilir.
dir(a)
# veya dir(str) ile string fonksiyonlarına ulaşılabilir.
['__add__',
'__class__',
'__contains__',
'__delattr__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getnewargs__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mod__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rmod__',
'__rmul__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'capitalize',
'casefold',
'center',
'count',
'encode',
'endswith',
'expandtabs',
'find',
'format',
'format_map',
'index',
'isalnum',
'isalpha',
'isascii',
'isdecimal',
'isdigit',
'isidentifier',
'islower',
'isnumeric',
'isprintable',
'isspace',
'istitle',
'isupper',
'join',
'ljust',
'lower',
'lstrip',
'maketrans',
'partition',
'replace',
'rfind',
'rindex',
'rjust',
'rpartition',
'rsplit',
'rstrip',
'split',
'splitlines',
'startswith',
'strip',
'swapcase',
'title',
'translate',
'upper',
'zfill']
a
'isim soyisim'
a.count("i")
4
help(a.count)
# veya help(str.count) ile dokümantasyona ulaşılabilir.
Help on built-in function count:
count(...) method of builtins.str instance
S.count(sub[, start[, end]]) -> int
Return the number of non-overlapping occurrences of substring sub in
string S[start:end]. Optional arguments start and end are
interpreted as in slice notation.
metin1="string icin cift tirnak kullanılabilir."
metin2='tek tırnak da kullanılabilir.'
metin3="cift tirnak icinde kesme isareti (') kullanılabilir."
metin4='tek tirnak icinde tekrar tek tirnak kullanilcaksa ters slash ile kullanılır. \' '
print(metin1, metin2)
print(metin3)
print(metin4)
string icin cift tirnak kullanılabilir. tek tırnak da kullanılabilir.
cift tirnak icinde kesme isareti (') kullanılabilir.
tek tirnak icinde tekrar tek tirnak kullanilcaksa ters slash ile kullanılır. '
Stringlerin indisleri
a="Bu bir metindir."
len(a)
16
a[0], a[len(a)-1], a[5], a[-1], a[-4]
('B', '.', 'r', '.', 'd')
a[0:3], a[8:11], a[:5], a[5:]
('Bu ', 'eti', 'Bu bi', 'r metindir.')
a
'Bu bir metindir.'
a[3:11:2], a[::2], a[::-1],a[::-2]
('brmt', 'B i eidr', '.ridnitem rib uB', '.intmrbu')
birinci_kelime="Merhaba"
ikinci_kelime="Dünya"
birinci_kelime+ikinci_kelime
'MerhabaDünya'
birinci_kelime="Merhaba"
ikinci_kelime="Dünya"
birinci_kelime+" "+ikinci_kelime
'Merhaba Dünya'
birinci_kelime * 10
'MerhabaMerhabaMerhabaMerhabaMerhabaMerhabaMerhabaMerhabaMerhabaMerhaba'
print("-"*30)
------------------------------
a="bu bir metindir"
a.split(" ")
['bu', 'bir', 'metindir']
a.replace("b","B")
'Bu Bir metindir'
Aritmetik operatörler
a=5
b=7
c=a+b
c
12
c=a-b
c
-2
c=a*b
c
35
c=a/b
c
0.7142857142857143
b=14
c=b//a
c
2
a,b = 23, 5
a,b
(23, 5)
c=a%b
c
3
a=2
b=4
c=a**b
c
16
2**10
1024
a=b=c=100
a,b,c
(100, 100, 100)
144**0.5
12.0