Saya baru mengenal python dan saya benar-benar tidak tahu apa yang menyebabkan ini terjadi, jadi jika Anda dapat membantu :) Program ini seharusnya menemukan palindrom dari daftar yang diberikan ex. 121,23.2,3883 dan memberikan output 3883,2,121 tetapi output saya lebih mirip ini:

3883
3883,2
3883,2,121

Saya tebal itu hanya beberapa hal kecil yang saya tidak tahu. Berikut kodenya:

lista=[]
lista = [int(clan) for clan in input("Unesi članove niza : ").split(',')]
lista.reverse()
rezultat=[]
for i in lista:
if i < 0:
    i = i * -1
    t = i
    rev = 0
    rev = rev * 10 + t % 10
    t = t // 10
    i = i * -1
    rezultat.append(str(i))
else:
        t = i
        rev = 0
while t > 0:
    rev = rev * 10 + t % 10
    t = t // 10
    if rev == i:
        rezultat.append(str(i))
        print(','.join(rezultat))
0
Krsi 23 Desember 2020, 11:27

3 jawaban

Jawaban Terbaik

Karena Anda mencetaknya dalam satu lingkaran, buat saja perubahan berikut:

lista=[]
lista = [int(clan) for clan in input("Unesi članove niza : ").split(',')]
lista.reverse()
rezultat=[]
for i in lista:
    if i < 0:
        i = i * -1
        t = i
        rev = 0
        rev = rev * 10 + t % 10
        t = t // 10
        i = i * -1
        rezultat.append(str(i))
    else:
            t = i
            rev = 0
    while t > 0:
        rev = rev * 10 + t % 10
        t = t // 10
        if rev == i:
            rezultat.append(str(i))
print(','.join(rezultat))
0
quest 23 Desember 2020, 08:38

Coba hapus print(','.join(rezultat)) dari blok while

Saya pikir itu harus menghentikan hasil yang berulang

0
fr4nkl1n-1k3h 23 Desember 2020, 08:40

Ini dia one-liner :)

sample = [121, 23, 2, 3883]
print(sorted(filter(lambda x: str(x) == str(x)[::-1], sample),reverse=True))
0
Nanthakumar J J 23 Desember 2020, 08:39