Merhaba oldukça basit bir sorunum var ama çözemedim izlediğim bir python videosunda kelimelerin terslerinin kendisiyle aynı olup olmadığının kontrolü yapılıyor bunu yaparken şu kodlar yazılmış.
def isPolindrome(string : str) -> bool:
reverse = string[::-1]
if string == reverse:
return True
return False
string = "radar"
if isPolindrome(string):
print(f"{string} is a polindrome string)
else:
print(f"{string} is not a polindrome string")
bende aynı programı kendim denemiştim benim kodlarım da şu şekilde
kelime = input("kelime girin: ")
baslangıc = len(kelime) -1
for index in kelime:
kelime2= print(kelime[baslangıc], end='')
baslangıc -= 1
if kelime is kelime2:
print(" Polindromdur")
else:
print(" polindrom değildir")
ancak hangi kelimeyi girersem gireyim sonuc her seferinde polindrom değildir oluyor bunun sebebi nedir nerede yanlış düşünüyorum
kelime = input("kelime girin: ")
baslangıc = len(kelime) - 1
kelime2 = ""
for index in kelime:
kelime2 += kelime[baslangıc]
baslangıc -= 1
print(kelime2)
if kelime == kelime2:
print("Polindromdur")
else:
print("polindrom değildir")
Düzeltmeler:
for döngüsü içinde kelime2'yi print fonksiyonuna eşitliyorsunuz. print fonksiyonundan dönen değer None'dır. Bu yüzden print kullanılmamalı burada.
kelime2'yi for döngüsü içinde kelime[baslangıc] değişkenine eşitlemek yerine; döngüden önce, kelime2'yi boş bir karakter dizisi olarak tanımlayıp, döngü içinde kendisine elemanlar eklenmeli.
kelime is kelime2 yerine kelime == kelime2'yi kullanmalısınız. Çünkü her ne kadar bu iki string aynı karakterlere sahip olsa da id değerleri farklı.
a = "radar"
b = a[::-1]
c = "radar"
print(id(a))
print(id(b))
print(id(c))