Mstafa123131
Femtopat
- Katılım
- 27 Kasım 2020
- Mesajlar
- 23
Daha fazla
- Cinsiyet
- Erkek
[CODE lang="python" title="kod"]yerleşim_yerleri = ["Kütahya", "Istanbul", "Izmir", "Bolu", "Inebolu", "Çanakkale", "Çan", "Tirebolucuk"]
def ara(kelime, altkelime):
if altkelime[-1] == "*":
kucuk = kelime.lower()
if kucuk.startswith(altkelime[:-1].lower()):
return kelime
else:
if kelime == altkelime:
return kelime
def bul(altkelime):
for i in yerleşim_yerleri:
r = ara(i, altkelime)
if r: print(r) [/CODE]
Benden istenen bu koda *bolu şeklinde aranması durumunda hem hem Bolu'nun hem de Inebolu'nun bastırılması. "*bolu*" şeklinde aranması durumunda ise Bolu, Inebolu ve Tirebolucuk'un bastırılmasıydı ben kodum ve sonucum şöyle:
Kodun düzgün çalışması için neleri değiştirmem gerek ve if r: print(r)'nin mantığı nedir? Direkt print(r) yazınca neden doğru olmuyor?
Şimdiden teşekkürler.
def ara(kelime, altkelime):
if altkelime[-1] == "*":
kucuk = kelime.lower()
if kucuk.startswith(altkelime[:-1].lower()):
return kelime
else:
if kelime == altkelime:
return kelime
def bul(altkelime):
for i in yerleşim_yerleri:
r = ara(i, altkelime)
if r: print(r) [/CODE]
Benden istenen bu koda *bolu şeklinde aranması durumunda hem hem Bolu'nun hem de Inebolu'nun bastırılması. "*bolu*" şeklinde aranması durumunda ise Bolu, Inebolu ve Tirebolucuk'un bastırılmasıydı ben kodum ve sonucum şöyle:
Python:
def ara(kelime, altkelime):
if altkelime[-1] == "*":
kucuk = kelime.lower()
if kucuk.startswith(altkelime[:-1].lower()):
return kelime
elif kucuk.endswith(altkelime[:1].lower()):
return kelime
if altkelime[0] == "*" and altkelime[-1] == "*":
kelimenin_yeri = kelime.find(altkelime)
if kelime[kelimenin_yeri:len(altkelime)] == altkelime:
return kelime
else:
if kelime == altkelime:
return kelime
def bul(altkelime):
for i in yerleşim_yerleri:
r = ara(i, altkelime)
if r: print(r)
print(bul("bolu*"))
print("*bolu*")
print("kale*")
Kod:
Bolu
Bolucuk
None
None
None
Şimdiden teşekkürler.