Armstrong sayısı ile ilgili Python kodu

pithyone

Centipat
Katılım
1 Ağustos 2022
Mesajlar
6
Daha fazla  
Cinsiyet
Erkek
Herkese öncelikle merhaba,
Kod öğrenmeye yeni başladım sayılır. Döngüleri öğrendikten sonra aldığım kursta şöyle bir ödev verildi: Sayının Armstrong sayısı olup olmadığını kontrol etme.
Ben de şu anki bilgilerim ile bir kod üretmeye çalıştım.
Değişik fonksiyonlar ve değişkenler ile tekrardan yazılabilir ama söz dizimi ile ilgili bir saçmalama durumum var mı ya da kod biraz daha sadeleşebilir mi diye sizlerden de görüş almak istedim.

Yazdığım kod ise şu şekilde:
Python:
print("""
////////////////////////////////////////////////
Armstrong sayısı mı ? Değil mi ?
////////////////////////////////////////////////
Eğer bir sayı basamaklarındaki sayıların
basamak sayısı kadar kuvvetleri alınır ve
bu sayılar toplandığında bu sayının kendisine
eşit oluyorsa bu sayısa Armstrong sayısı denir.
////////////////////////////////////////////////
Programdan çıkmak için q yazabilirsiniz.
////////////////////////////////////////////////
""")

while True:
    a= input("Sayıyı giriniz:")
    bas_say = len(a)
    if (a=="q" or a=="Q"):
        break

    else:
        b = int(a)
        listNumber = list()
        for i in range(0,bas_say):
            x = b % 10
            b = b / 10
            x = int(x)
            listNumber.append(x)

        deger = 0
        for s in listNumber:
            deger += s ** bas_say

        a = int(a)
        print("Armstrong sayısı olması için yapılan işlemler sonucu çıkan sayı {} olur".format(deger))
        if (a == deger):
            print("Girdiğiniz {} sayısı bir Armstrong sayısıdır.".format(a))

        else:
            print("Girdiğiniz sayı bir Armstrong sayısı değildir.")

Şimdiden teşekkürler. ☺️
 
Son düzenleyen: Moderatör:
JavaScript:
export function isArmstrongNumber(num: number): boolean {
    const strNum = num + "";
    const power = strNum.length;
    return strNum.split("").map(base => parseInt(base) ** power).reduce((acc, cur) => acc + cur) === num;
}

Tek satıra bile indirilebilir.

const isArmstrongNumber = (num: number): boolean => `${num}`.split("").map(base => parseInt(base) ** `${num}`.length).reduce((acc, cur) => acc + cur) === num;

Ama bence gereksiz.

Benzer şekilde Python ile de yazılabilir. Higher Order Functions ve Lambda'lar Python'da da mevcut.
 

Technopat Haberler

Yeni konular

Geri
Yukarı