Python'da sayı türünü bulma soruları

Tunahan Mert07

Hectopat
Katılım
24 Eylül 2021
Mesajlar
462
Çözümler
1
Yer
Antalya/Alanya
Daha fazla  
Cinsiyet
Erkek
1 - Kullanıcıdan aldığınız bir sayının mükemmel olup olmadığını bulmaya çalışın.
2 - Kullanıcıdan aldığınız bir sayının "armstrong" sayısı olup olmadığını bulmaya çalışın.

Merhabalar. Kardeşimle birlikte şu soruları yapmaya çalıştık fakat yapamadık. Ben sadece ona destek vermek için yanında oturuyorum fakat kardeşim yapamadı ve birkaç gündür kendini iyi hissetmiyor. Ben ise en son ona dedim, daha önünde uzun yol var, pes etme. Bu sorular matematikle alakalı diye. Biraz kendine geldi fakat bu sorular matematikle mi alakalı? Mesela bu soruları ilk okul matematiği olan yazılımcılar yapabilir mi?
Not: Soruların altında nasıl yapılacağı yazıyordu. Örneğin birinci sorunun altında: Bir sayının kendi hariç bölenlerinin toplamı kendine eşitse bu sayıya "mükemmel sayı" denir. Örnek olarak, 6 mükemmel bir sayıdır. (1 + 2 + 3 = 6)
 
Örneğin mükemmel sayı için kullanıcıdan alınan değere kadar devam eden bir for döngüsü yazılır. Daha sonra bu for döngüsünde birer birer artan her n değeri için kullanıcının girdiği sayıyı tam bölüp bölmediği if ile kontrol edilir. Sonrasında ise her sağlanan if değeri için bir toplama işlemi yapılır. Bunu ya bir dizi ile yaparsınız ya da if bloğunun içerisinde bir toplama işlemi olarak yaparsınız.
 
Örneğin mükemmel sayı için kullanıcıdan alınan değere kadar devam eden bir for döngüsü yazılır. Daha sonra bu for döngüsünde birer birer artan her n değeri için kullanıcının girdiği sayıyı tam bölüp bölmediği if ile kontrol edilir. Sonrasında ise her sağlanan if değeri için bir toplama işlemi yapılır. Bunu ya bir dizi ile yaparsınız ya da if bloğunun içerisinde bir toplama işlemi olarak yaparsınız.
[CODE lang="c" title="Bunu Kullanabilirsiniz."]#include <stdio.h>
int main() {
int sayi,i,toplam=0;
printf("Sayiyi giriniz: "); scanf("%d",&sayi);
i=1;
while(i<sayi) {
if(sayi%i==0) {
toplam+=i;
}
i++;
}
if(toplam==sayi) {
printf("BU BIR MUKEMMEL SAYIDIR.");
}
else printf("BU MUKEMMEL SAYI DEGILDIR.");
}[/CODE]
6 28 ve 496 değerlerinde denediğimde sağlıklı bir şekilde çalıştı.
 
[CODE lang="c" title="Bunu Kullanabilirsiniz."]#include <stdio.h>
int main() {
int sayi,i,toplam=0;
printf("Sayiyi giriniz: "); scanf("%d",&sayi);
i=1;
while(i<sayi) {
if(sayi%i==0) {
toplam+=i;
}
i++;
}
if(toplam==sayi) {
printf("BU BIR MUKEMMEL SAYIDIR.");
}
else printf("BU MUKEMMEL SAYI DEGILDIR.");
}[/CODE]
6 28 ve 496 değerlerinde denediğimde sağlıklı bir şekilde çalıştı.

Örneğin mükemmel sayı için kullanıcıdan alınan değere kadar devam eden bir for döngüsü yazılır. Daha sonra bu for döngüsünde birer birer artan her n değeri için kullanıcının girdiği sayıyı tam bölüp bölmediği if ile kontrol edilir. Sonrasında ise her sağlanan if değeri için bir toplama işlemi yapılır. Bunu ya bir dizi ile yaparsınız ya da if bloğunun içerisinde bir toplama işlemi olarak yaparsınız.

Neyse bu konuyu burada kapatıyorum demek istediğin anlaşılmamış.
 
[CODE lang="python" title="Code"]sayi = int(input("Bir sayi girin : "))
liste = []
toplam = 0

for i in range (1,sayi):
if sayi % i == 0:
liste.append(i)

for a in range(0,len(liste)):
toplam += liste[a]

if(toplam == sayi):
print('{0} sayisi bir mükemmel sayidir .'.format(sayi))
else :
print('{0} sayisi bir mükemmel sayi değildir .'.format(sayi))[/CODE]
Bu örnekler algoritma becerinizi geliştirmek için birebirdir fazla matetatikle alakalı olduğunu sanmıyorum.
2. soruyu da açıklarsanız yardım edebilirim.
 
Takıldığınız nokta aligoritmayı kurmakta mı yoksa bu aligoritmayı pythona aktarabilmekte mi buna göre aksiyon almalısınız. Örneğin mükemmel sayı bulmak için Python'u bir kenara bırakıp mükemmel sayı nedir nasıl bulunur öğrendikten sonra kağıt kalemle sayıların mükemmel olup olmadığını bulmaya çalışsın. Bir sayının mükemmel sayı olup olmadığını kontrol etmek için ilgili sayının bölenlerini ortaya çıkaracak. Bir sayının bölenlerini bulamıyorsa matematiksel olarak bu açığını kapatsın örneğin. Bir sayının bölenlerini bulunca o sayının kendisi hariç kalan bölenlerini toplayacak ve toplama sonucu o sayının kendisiyse bu sayı mükemmel, değilse mükemmel olmayan bir sayı olmuş olacak. Bunu çalışıp kağıt üzerinde çözebiliyor ama Pythona aktaramıyorsa python fonkisyonları ve matematik operatörleri ile ilgili daha fazla pratik yapsın. Soruyu kağıt üzerinde çözemiyorsa Pythondan önce biraz aligoritma çalışsın. Matematik programlamada kesinlikle gereklidir diye bir şey yoktur aslında. Ama matematikte programlama gibi analitik zekaya dayalı olduğundan programlamayı geliştirme ve öğrenme açısından çok faydalı ve kullanışlıdır. Matematik konusunda eksikleri varsa programalama öğrenirken aynı zamanda matematikte öğrenmesi kardeşine çok artı sağlar.
 
Temel matematik ve temel Python bilgisi yeterli böyle sorular için. Google'a tanımını sorarsınız, olur biter.

Mesela mükemmel sayı. Sayının kendisi hariç bölenleri toplamı kendisine eşitse demiş. Yani sayının kendisi hariç bölenlerini bulup toplamanız, sonra da sayının kendisine eşit mi diye bakmanız gerekiyor.
Böyle gidiyor...

Bir sayının başka bir sayıyı bölüp bölmediğini kontrol etmeyi ona öğretmişlerdir. Döngüleri de öğretmişlerdir.
 
[CODE lang="python" title="Code"]sayi = int(input("Bir sayi girin : "))
liste = []
toplam = 0

for i in range (1,sayi):
if sayi % i == 0:
liste.append(i)

for a in range(0,len(liste)):
toplam += liste[a]

if(toplam == sayi):
print('{0} sayisi bir mükemmel sayidir .'.format(sayi))
else :
print('{0} sayisi bir mükemmel sayi değildir .'.format(sayi))[/CODE]
Bu örnekler algoritma becerinizi geliştirmek için birebirdir fazla matetatikle alakalı olduğunu sanmıyorum.
2. soruyu da açıklarsanız yardım edebilirim.

bir sayı eğer 4 basamaklı ise ve oluşturan rakamlardan herbirinin 4. kuvvetinin toplamı( 3 basamaklı sayılar için 3.kuvveti ) o sayıya eşitse bu sayıya "armstrong" sayısı denir.
@hamzaunsal arkadaşın yaptığı algoritma gibi anlatırsanız çok sevinirim
 
Tüm basamaklarındaki rakamların sayının basamak adedince kuvvetlerinin toplamı kendisine eşit olan sayılara armstrong sayısı denir.

Yani sayının kaç basamaklı olduğunu bulacaksınız. Sonra sayıyı basamaklarına ayıracaksınız. Sonra kuvvetlerini alacaksınız. Sonra toplayacaksınız.

Algoritma gibi demişsiniz. Herif size kullanacağınız fonksiyona kadar vermiş. Saadece fiile dökmesi kalmış.

Kod:
num = [int(x) for x in input("sayı gir: ")]
print("armstrong sayısı" if sum([x**len(num) for x in num]) == int("".join([str(x) for x in num])) else "armstrong sayısı değil")
 
Son düzenleme:
[CODE lang="c" title="Bunu Kullanabilirsiniz."]#include <stdio.h>
int main() {
int sayi,i,toplam=0;
printf("Sayiyi giriniz: "); scanf("%d",&sayi);
i=1;
while(i<sayi) {
if(sayi%i==0) {
toplam+=i;
}
i++;
}
if(toplam==sayi) {
printf("BU BIR MUKEMMEL SAYIDIR.");
}
else printf("BU MUKEMMEL SAYI DEGILDIR.");
}[/CODE]
6 28 ve 496 değerlerinde denediğimde sağlıklı bir şekilde çalıştı.
C++:
#include <iostream>
using namespace std;

int main()
{
    int sayi;
    int toplam = 0;
    cout<<"Bir sayı giriniz: ";
    cin>>sayi;
   
    for (int n = 1; n < sayi; n++){
       
        if (sayi % n == 0 ){
            toplam = toplam + n;
        }
    }
   
    if (toplam == sayi){  cout << sayi << " sayısı bir mükemmel sayıdır."<<endl;   }
    else {  cout << sayi << " sayısı bir mükemmel sayı değildir."<<endl;  }
    return 0;
}

Bu da başka bir örnek aynı soru için, kendi yorumumda anlatmaya çalıştığım yol. Farklı çözüm yolları elbette bulunur. Önemli olan algoritmayı oturtup, daha sonra bunu koda dökmektir.
 

Technopat Haberler

Yeni konular

Geri
Yukarı