Herkese merhabalar; Bir sorum var;
Klavyeden girilen N değerine göre(N>=20 şartını sağlayana kadar N sayısı istenecek.) 10 ile N arasındaki tüm sayıların toplamını 5 ile N arasındaki tek sayıların çarpımı 14 ile N arasındaki çift sayıların aritmetik ortalamasını bulup ekranda gösteren programı python dili ile yazmam gerekiyor. Nasıl yazarız? Yardımcı olur musunuz? Teşekkürler.
---------------------------------
10 ile N arasındaki sayıların toplamını bulabildim; Daha kolay yolu varsa yardımcı olun lütfen :\
toplam=10;
sayac=11;
n = int(input("Bir sayi girin:"));
if (n is 20 or n>20):
print("bildiniz")
while (sayac < n):
toplam += sayac
sayac += 1
print("toplami: {}, ".format(toplam))
else:
print("Lütfen 20 veya daha büyük bir sayi giriniz")
Gerisini yapamadım
Nasıl yazarız? değil ama algoritmayı hangi mantıkla kurmalıyız olmalı doğru soru. Çinlilerin dediği gibi balık vermek dseğil balık tutmasını öğretmek...
N sayının tek mi çifti olduğunu nasıl anlarız? Bunu için mod alma işlemini kullan abilir mesela. Eğer tek sayı ise birinci toplamı hesaplarken dahil edeceğiz, ikincisinde ise hariç; yok çift sayı ise bunun tersini yapacağız.
Kendi çapımda öğrenmeye çalışıyorum bir kaç gündür. Biraz özensiz yapmış olabilirim ancak mantığını görmeye yardımcı olacaktır diye düşünüyorum.
Not: Gece geç saatte yaptığımdan 14 ile N sayısı arasındaki çift sayıların toplamını bulmuşum ancak aritmetik ortalamasını almayı unutmuşum. Basitçe bulunan toplamı (14-N arasındaki çift sayılar) sayı sayısına bölersen aritmetik ortalama sonucunu vermiş olur
https://paste.ubuntu.com/p/ybZZTCmCzk/ (https://paste.ubuntu.com/p/ybZZTCmCzk/)
Mesela
N%2=0
ise N tek mi çift mi olur?
n = int(input("Sayı giriniz:"))
toplam = 0
toplamiki=1
toplamuc=0
toplamdort=0
liste = []
while n >= 20:
for i in range(10,n):
toplam+=i
print(toplam)
for j in range(5,n):
if j % 2 != 0:
toplamiki *= j
print(toplamiki)
for k in range(14,n):
if k % 2 == 0:
liste.append(k) #k'nin iki ile bölümünden kalan 0 ise çift olduğundan listeye ekledik.
for m in liste:
toplamuc +=m #m değişkenini liste içerinde döndürüp toplamını toplamuc değişkenine eşitledik
toplamdort= toplamuc/len(liste) #aritmetik ortalaasını bulmak için listenin uzunluğuna böldük.
print(toplamdort)
break
Alıntı yapılan: programmer - 05 Ağustos 2018 - 07:37:52
Mesela
N%2=0
ise N tek mi çift mi olur?
Çift olur.. Modüler aritmetik..
N sayısı sürekli 2'ye bölünür. En son kalana bakılır. Kalan 1 ise tek 0 ise çifttir.
Hocamlarım; şu kodlama 2 saatten fazlasını aldı ama çok şey öğrendim ve program gördüğüm kadarıyla sorunsuz çalışıyor.
toplam=0;
sayac=11;
sayac2=12;
toplam2=0;
toplam3=0;
sayac3=7;
carpim=7;
sayac4=8;
sayac5=16;
toplam5=0;
n = int(input("Bir sayi girin:"));
if (n is 20 or n>20):
print("bildiniz")
while (sayac < n):
toplam += sayac
sayac += 1
print("10 ile; girilen değer arasindaki sayilarin toplami: {}, ".format(toplam))
while (sayac2 < n):
if (sayac2%2==0):
toplam2 +=sayac2
sayac2 += 1
print("10 ile; girilen değer arasindaki çiftler toplami: {}, ".format(toplam2))
while (sayac3 < n):
if (sayac3%2==1):
toplam3 +=sayac3
sayac3 += 1
print("5 ile; girilen sayi arasindaki tekler toplami: {}, ".format(toplam3))
while (sayac4 < n):
if (sayac4%2==1):
carpim *=sayac4
sayac4 += 1
print("5 ile; girilen sayi arasindaki tekler carpimi: {}, ".format(carpim))
while (sayac5 < n):
if (sayac5%2==0):
toplam5 +=sayac5
sayac5 +=1
print("14 ile; girilen sayi arasindaki çift sayıların ortalaması : {}, ".format((toplam5)/(n-10))
else:
print("Lütfen 20 veya daha büyük bir sayi giriniz")
Ben tabi C ve C++ ile kodlamaya başladığım için o kültüre paralel gidiyorum (Bakıyorum yani nerdeyse amatör C veya C++ ;D ) Ama sizlerin kodlaması çok çok kısaymış. Onlarıda beğendim
Not: Son ortalamayı yanlış almış olabilirim. Telefondan düzeltmeye çalıştım hatalı olursa geceye doğru tekrar uğraşacağım
Ben söyle kısaltmaya çalışırdım. do while döngüsü içinde koşul uygun olana kadar diziye ekle, sonra karşulaştırma vs.. Bakın C'de bu dinamik dizi imkanı yok, neden Pyton'un nimetlerinden yararlan mıyorsunuz?
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Ağustos 05, 2018, 22:17:43
[mention=640402]@Çağrı07[/mention] [mention=640430]@By_BooMeranG[/mention]Sonunda beni de Pythoncu yaptınız ya, hayırlı olsun. :) Bir kontrol edin arkadaşlar doğru çalışıyor mu algoritma
#!/usr/bin/env python
# -*- coding: utf-8 -*-
sayilar=[]
sayi=0
toplam_10_N=0
carpim_5_N=1
toplam_14_N=0
sayac_14_N=0
ortalama_14_N=0
N=0;
condition=True
while condition:
sayi=int(input("Bir sayi girin:"))
sayilar.append(sayi)
condition=sayi<20
N=sayi
for i in range(len(sayilar)):
if 10 <= sayilar[i] and sayilar[i] <= N:
toplam_10_N=toplam_10_N+sayilar[i]
if 5 <= sayilar[i] and sayilar[i] <= N and sayilar[i]%2 !=0:
carpim_5_N = carpim_5_N*sayilar[i]
if 14 <= sayilar[i] and sayilar[i] <= N and sayilar[i]%2 ==0:
toplam_14_N=toplam_14_N+sayilar[i]
sayac_14_N=sayac_14_N+1
if sayac_14_N:
ortalama_14_N=toplam_14_N/sayac_14_N
print "10 ile ",N," arasında girilen sayıların toplamı: ", toplam_10_N
print "5 ile ", N, " arasında girilen tek sayıların çarpımı: ", carpim_5_N
print "14 ile ",N," arasında girilen çift sayıların aritmatik ortalaması", ortalama_14_N
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 05 Ağustos 2018 - 22:34:11
if carpim_5_N ==1 :
carpim_5_N=0
printlerden önce bu satırı ekleme lazım. N harif 5'den az ise 1 çıköasın diye düzeltme
[mention=640442]@Çağrı07[/mention]Neden direk sayıları kullanmak yerine değişkene atayıp kullanıyorsunuz? Bende python da pek tecrübeli sayılmam, merak ettim.
Alıntı yapılan: cosmicowl - 06 Ağustos 2018 - 08:08:44
[mention=640442]@Çağrı07[/mention]Neden direk sayıları kullanmak yerine değişkene atayıp kullanıyorsunuz? Bende python da pek tecrübeli sayılmam, merak ettim.
Dünde buna benzer bi soru görmüştüm. Kusura bakmayın, islerden cevaplayamadım;
Hocam bende yeni başladım Python'a ve daha önce C++ kullandım ama ilk başladığım C diliydi ve C++'da da çok zorlanmadım. Python'i yeni kullanmaya daha yeni öğrenmeye başladığım için böyle oluyor :)
@cosmicowl artan (sayac) bir sayı varsa degişken tanımlamak çok normal tanımlamssa hata verir. sayac sayac2 sayac3 ... 'i tanımlamak zorunda çünkü 1 artırarak döngüyü devam ettiriyor. ben gereksiz bir tanımlama göremedim. while ile yzdığı için bu kadar fazla değişken var farklı bir yol ile yzsaydı bir kaç değişkenle bu işi yazabilirdi. artık oda deneyimle olan bir şey....
7 ile 11 arasındaki sayılar {8,9,10} toplamı Matematiğe göre şu şekilde olmalı 8+9+10=27 (ki bu Türkçe'ye göre de böyle)
Yani 14 ile girilen sayı arasındaki çift sayılar listesi veya dizisi (örneğin girilen sayı 21 için ) = { 16, 18, 20}
Yeni düzenlemeyi şu şekilde yaptım;
n = int(input("Bir sayı giriniz:"))
toplam=0
toplam2=0
toplam3=0
carpim1=1
liste=[]
toplam4=0
toplam5=0
toplamuc=0
toplamdort=0
while n >= 20:
for i in range(11,n):
toplam +=i
print("10 ile girdiğiniz sayi arasindaki sayilar toplami {} ; ".format(toplam))
for j in range(11,n):
if j%2==0:
toplam2 +=j
print("10 ile girdiğiniz sayi arasindaki çift sayilar toplami {} ; ".format(toplam2))
for k in range(6,n):
if k%2==1:
toplam3 +=k
print("5 ile girdiğiniz sayi arasindaki tek sayilar toplami {} ; ".format(toplam3))
for l in range(6,n):
if l%2==1:
carpim1 *=l
print("5 ile; girilen sayi arasindaki tekler carpimi: {}, ".format(carpim1))
for s in range(15, n):
if s % 2 == 0:
liste.append(s) # s'nin iki ile bölümünden kalan 0 ise çift olduğundan listeye ekledik.
for m in liste:
toplam4 += m # m değişkenini liste içerinde döndürüp toplamını toplam4 değişkenine eşitledik
toplam5 = toplam4 / len(liste) # aritmetik ortalamasını bulmak için listenin uzunluğuna böldük.
print("14 ile; girilen sayi arasindaki çift sayıların ortalaması : {} ; ".format(toplam5))
break
Program bu şekilde güzel çalışıyor (2 günün sonunda :D ) ancak 32. satır ( for s in range(15, n): ) bu satıran itibaren gerisini anlamadım :/ Yardımcı olabilir misiniz?
Not: Sorunun istediğinden 1-2 fazla cevap var. Bunları kendime alıştırma olsun diye eklemiştim. Anlayışınıza teşekkürler
@.py teteşekkürler
@Çağrı07. Aslında diğerleriyle aynı, s'yi 15 den n ye kadar gezdirip çift olanları listeye ekledik, sonra m yi liste içinde gezdirip her değerini topladık. Son olarak toplamı listedeki eleman sayısına böldük ki aritmetik ort bulalım.
Alıntı yapılan: cosmicowl - 06 Ağustos 2018 - 13:47:23
@.py teteşekkürler
@Çağrı07. Aslında diğerleriyle aynı, s'yi 15 den n ye kadar gezdirip çift olanları listeye ekledik, sonra m yi liste içinde gezdirip her değerini topladık. Son olarak toplamı listedeki eleman sayısına böldük ki aritmetik ort bulalım.
Çok iyi oldu hocam teşekkür ederim Allah razı olsun :)
Alıntı yapılan: Çağrı07 - 06 Ağustos 2018 - 12:07:59
7 ile 11 arasındaki sayılar {8,9,10} toplamı Matematiğe göre şu şekilde olmalı 8+9+10=27 (ki bu Türkçe'ye göre de böyle)
Yani 14 ile girilen sayı arasındaki çift sayılar listesi veya dizisi (örneğin girilen sayı 21 için ) = { 16, 18, 20}
Yeni düzenlemeyi şu şekilde yaptım;
n = int(input("Bir sayı giriniz:"))
toplam=0
toplam2=0
toplam3=0
carpim1=1
liste=[]
toplam4=0
toplam5=0
toplamuc=0
toplamdort=0
while n >= 20:
for i in range(11,n):
toplam +=i
print("10 ile girdiğiniz sayi arasindaki sayilar toplami {} ; ".format(toplam))
for j in range(11,n):
if j%2==0:
toplam2 +=j
print("10 ile girdiğiniz sayi arasindaki çift sayilar toplami {} ; ".format(toplam2))
for k in range(6,n):
if k%2==1:
toplam3 +=k
print("5 ile girdiğiniz sayi arasindaki tek sayilar toplami {} ; ".format(toplam3))
for l in range(6,n):
if l%2==1:
carpim1 *=l
print("5 ile; girilen sayi arasindaki tekler carpimi: {}, ".format(carpim1))
for s in range(15, n):
if s % 2 == 0:
liste.append(s) # s'nin iki ile bölümünden kalan 0 ise çift olduğundan listeye ekledik.
for m in liste:
toplam4 += m # m değişkenini liste içerinde döndürüp toplamını toplam4 değişkenine eşitledik
toplam5 = toplam4 / len(liste) # aritmetik ortalamasını bulmak için listenin uzunluğuna böldük.
print("14 ile; girilen sayi arasindaki çift sayıların ortalaması : {} ; ".format(toplam5))
break
Program bu şekilde güzel çalışıyor (2 günün sonunda :D ) ancak 32. satır ( for s in range(15, n): ) bu satıran itibaren gerisini anlamadım :/ Yardımcı olabilir misiniz?
Not: Sorunun istediğinden 1-2 fazla cevap var. Bunları kendime alıştırma olsun diye eklemiştim. Anlayışınıza teşekkürler
Bu kodda while döngüsü içinde sayıları almıyor bir tane sayı alıyor. Çalışmaz bu kod bu haliyle, benmiz yazdığım kod çalışıyor.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Ağustos 06, 2018, 23:07:22
Beni yazdığım kodda N 'den başka fazla değişken yok ,,sayi'yi da kullanabilirsin. Ama soruda geçiyor diye özellikle fazladan ekledim.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Ağustos 06, 2018, 23:36:43
Alıntı yapılan: .py - 06 Ağustos 2018 - 11:16:46
@cosmicowl artan (sayac) bir sayı varsa degişken tanımlamak çok normal tanımlamssa hata verir. sayac sayac2 sayac3 ... 'i tanımlamak zorunda çünkü 1 artırarak döngüyü devam ettiriyor. ben gereksiz bir tanımlama göremedim. while ile yzdığı için bu kadar fazla değişken var farklı bir yol ile yzsaydı bir kaç değişkenle bu işi yazabilirdi. artık oda deneyimle olan bir şey....
toplamı ve çarğımı doğrudan yap<rsını<z nbular için ayac tanımlanmak zorun da
değil. Benim gönderdiğim çalışan kodu inceleyin.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 06 Ağustos 2018 - 23:45:18
Sanki sayılar sıralı girilevek miş gibi düşünmüşünüz, Oysa nasıl gireleceğin bilemeyiz. Onun için bir diziye atıp baştan benim yaptığım gibi kontro k etmeniz gerekir.
Alıntı yapılan: programmer - 06 Ağustos 2018 - 23:05:36
Bu kodda while döngüsü içinde sayıları almıyor bir tane sayı alıyor. Çalışmaz bu kod bu haliyle, benmiz yazdığım kod çalışıyor.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Ağustos 06, 2018, 23:07:22
Hocam sizin program da n için 23 sayısını girdiğimde şöyle diyor;
"10 ile 23 arasında girilen sayıların toplamı: 23
5 ile 23 arasında girilen tek sayıların çarpımı: 23
14 ile 23 arasında girilen çift sayıların aritmatik ortalaması 0"
Demek istediğinizi anlamadım?
Benim programımda çalışıyor ama. Windows Pycharm kullanıyorum
Benim yazdığım işini görmedi mi? :)
r artimatik ortalamada , artık onu da siz bulun düzeltin .pyton2 olarak çalıştırcaksınız beinmkini veya print'leri düzenleyip pyton3 olarak çalıştırabilirsiniz. Sizin ki 20' veya büyüğe kadar nasıl döngüye giriyor anlamadım. kodda öyle bir döngü yok ki? Sayılar sıralı girilmeyebilir. illa veya küçükten büyüğe, bir algoritma istediğiniz gib ideğil her veri giriş durumunda doğru çalışmalı.
Burda bir döngü yok, nasıl doğru çalışyor Window'da başka (mucizevi şekilde istediğiniz gibi :) )Linuxde başka mı çalışıyor Python
n = int(input("Bir sayı giriniz:"))
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Ağustos 08, 2018, 00:29:56
Beni yazdığım kod doğru, ödevdeki soruyı bir daha okuyun ve dikkatli olarak çıktıları karşılaştırın.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Ağustos 08, 2018, 00:32:28
[mention=640453]@.py[/mention]
bir de sen bakar mısın? Arkadaşların kodu Windows'dadoğru olarak çalışıyormuş. Linuz'da bir sayı alıp çıkıyor. Magic sayı sanki değil mi? :))
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 08 Ağustos 2018 - 00:48:00
[mention=640506]@Çağrı07[/mention] önce ödevi iki defa okumanı öneririm. Sen çünkü ödevin istediğinden başka bir şeyi sayı dizileriyle hesap yapıyorsun. Önce problemi basitleştirelim, 20 veya daha büyük sayı girilene kadar tek tek girilen sayıları bir dizeye kaydedin, sonra da bu diziyi yazdırın. bunu bir while döngüsü ile alıp for döngüsüyle yazdırmanız gerekir. Öyle ilk on sayıyı sıralı girseydi gibi kabullerle olnmaz bu işe 5,15,4,10, 17, 19 rastgele sayılar girilecek bu durumda da bütün dizideki elemanları tek tek kontrol etmen gerekecek hem aralık kontrolü hem de tek mi çift mi kontrolü benim kodumda yaptığımda bu.
[mention=640445]@programmer[/mention] dostum sanırım dalgınlığına geldi liste kullandığın için 20 den büyük tek sayı girildiğinde problem çıkıyor 21den küçük birden fazla sayı girdiğinde sorun yok ama senin algoritman aralarında en mantıklısı. senin kodda bazı değişiklikler yaptım.
https://repl.it/@YazilimDunyasi/NN
Bitin girilen sayıların ritmatik ortamasın
değil çift sayıların
aritmatik ortlamasını alıyorum. Aslında onları diziye alıp yazarken şu şu öift sayılar diye belirtilse daha anlaşılır olurdu.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Ağustos 08, 2018, 01:40:05
Alıntı yapılan: Çağrı07 - 04 Ağustos 2018 - 21:30:25
Herkese merhabalar; Bir sorum var;
Klavyeden girilen N değerine göre(N>=20 şartını sağlayana kadar N sayısı istenecek.) 10 ile N arasındaki tüm sayıların toplamını 5 ile N arasındaki tek sayıların çarpımı 14 ile N arasındaki çift sayıların aritmetik ortalamasını bulup ekranda gösteren programı python dili ile yazmam gerekiyor. Nasıl yazarız? Yardımcı olur musunuz? Teşekkürler.
---------------------------------
10 ile N arasındaki sayıların toplamını bulabildim; Daha kolay yolu varsa yardımcı olun lütfen :\
toplam=10;
sayac=11;
n = int(input("Bir sayi girin:"));
if (n is 20 or n>20):
print("bildiniz")
while (sayac < n):
toplam += sayac
sayac += 1
print("toplami: {}, ".format(toplam))
else:
print("Lütfen 20 veya daha büyük bir sayi giriniz")
Gerisini yapamadım
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 08 Ağustos 2018 - 01:58:16
işte bu da Python3 versiyonu, şu çıkıyor, ama bu çıkması lazım diye kimse bir şey söylemiyor. Ama ben eminim. çıkması gereken çıkıyor. Algoritma doğru ve çalışıyor. Ama arkadaşın kemdi kodunu vermesini isterim, herkes yanlış yaptığını kabul etmek isemez. Olur a belki ben yanlış yapmışımdır. Sonra hocasına bu kodu ikinci olarak götürsün. Zaten hazır ödev doğru değil aslında gaza geldim çözdüm. Bu da son.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
sayilar=[]
sayi=0
toplam_10_N=0
carpim_5_N=1
toplam_14_N=0
sayac_14_N=0
ortalama_14_N=0
N=0;
condition=True
while condition:
sayi=int(input("Bir sayi girin:"))
sayilar.append(sayi)
condition=sayi<20
N=sayi
for i in range(len(sayilar)):
if (10 <= sayilar[i]) and (sayilar[i] <= N):
toplam_10_N=toplam_10_N+sayilar[i]
if (5 <= sayilar[i]) and (sayilar[i] <= N) and (sayilar[i]%2 !=0):
carpim_5_N = carpim_5_N*sayilar[i]
if (14 <= sayilar[i]) and (sayilar[i] <= N) and (sayilar[i]%2 ==0):
toplam_14_N=toplam_14_N+sayilar[i]
sayac_14_N=sayac_14_N+1
if sayac_14_N:
ortalama_14_N=toplam_14_N/sayac_14_N
if carpim_5_N == 1:
carpim_5_N=0
print ("10 ile {0} arasında girilen sayıların toplamı: {1}".format(N,toplam_10_N))
print ("5 ile {0} arasında girilen tek sayıların çarpımı: {1}".format(N, carpim_5_N))
print ("14 ile {0} arasında girilen çift sayıların aritmatik ortalaması: {1}".format(N,ortalama_14_N))
if (n is 20 or n>20): kardeşim is komutunu kullanmamanı tavsiye ederim bellekteki yerini bulur sen == komutunu kullan == ve is aynı işlevi vermemektedir eğer if 20 ye eşitse gibi bir kullanım yapacaksanız == kullanmanızı tavsiye ederim :)