Python konusunda yardımcı olabilir misinizz?

olcum_listesi=[]
x=int(input(‘liste uzunluğunu giriniz’))

for a in range(x):
if a==0:
cnc_model=input(‘CNC modelini giriniz’).upper()
olcum_listesi.insert(a, cnc_model)
elif a==1:
std_olcu=float(input(‘Standart ölçüyü giriniz’))
olcum_listesi.insert(a, std_olcu)
else:
olcumler=input(‘Ölçümleri giriniz’)
-----if olcumler==“false”:
olcum_listesi.insert(a, False)
else:
olcum_listesi.insert(a, float(olcumler))
-------

def listeyi_duzenle(olcum_listesi):
yeni_liste = []
for i in range(len(olcum_listesi)-2):
if isinstance(olcum_listesi[i+2], float):
yeni_liste.append(olcum_listesi[i+2])
elif olcum_listesi[i+2] == False:
yeni_liste = []
return yeni_liste

yeni_liste1 = listeyi_duzenle(olcum_listesi)

def ortalama_sapma_hesapla(list):
toplam = 0
for b in range(len(list)):
toplam += (list[b]-list[1])
ortalama_sapma = (1/(len(list)-2)) * toplam
return ortalama_sapma

ortalamasapma = ortalama_sapma_hesapla(yeni_liste1)

def std_sapma(list):
import math
toplam = 0
for i in range(len(list)):
toplam += (list[i] - ortalamasapma) ** 2
standart_sapma = math.sqrt(1 / (len(list) - 2) * toplam)
return standart_sapma

standart_sapma = std_sapma(yeni_liste1)
print(“Standart Sapma:”, standart_sapma)

ŞU KESME İŞARETİYLE AYIRDIĞIM YERİ DAHA FARKLI NASIL YAZABİLİRİZ ?

Kodunuzu ctrl+e içinde atarmısınız.

olcum_listesi=[]
x=int(input(‘liste uzunluğunu giriniz’))

for a in range(x):
    if a==0:
        cnc_model=input(‘CNC modelini giriniz’).upper()
        olcum_listesi.insert(a, cnc_model)
    elif a==1:
        std_olcu=float(input(‘Standart ölçüyü giriniz’))
        olcum_listesi.insert(a, std_olcu)
    else:
        olcumler=input(‘Ölçümleri giriniz’)
-----if olcumler==“false”:
        olcum_listesi.insert(a, False)
     else:
        olcum_listesi.insert(a, float(olcumler))-------

def listeyi_duzenle(olcum_listesi):
    yeni_liste = []
    for i in range(len(olcum_listesi)-2):
        if isinstance(olcum_listesi[i+2], float):
            yeni_liste.append(olcum_listesi[i+2])
        elif olcum_listesi[i+2] == False:
            yeni_liste = []
    return yeni_liste

yeni_liste1 = listeyi_duzenle(olcum_listesi)

def ortalama_sapma_hesapla(list):
    toplam = 0
    for b in range(len(list)):
        toplam += (list[b]-list[1])
        ortalama_sapma = (1/(len(list)-2)) * toplam
    return ortalama_sapma

ortalamasapma = ortalama_sapma_hesapla(yeni_liste1)

def std_sapma(list):

import math

toplam = 0

for i in range(len(list)):
    toplam += (list[i] - ortalamasapma) ** 2
    standart_sapma = math.sqrt(1 / (len(list) - 2) * toplam)
return standart_sapma

standart_sapma = std_sapma(yeni_liste1)

print(“Standart Sapma:”, standart_sapma)

Bir üretim hattında çeşitli parçaların üretimi sırasında CNC işleme makinelerinin parçaların
spesifikasyonlarını ne ölçüde sağladığını değerlendirecek bir program yazmanız istenmektedir.

Bunun için aşağıdakine benzer ölçüm listeleri kullanılacaktır. Aşağıdaki örneklerden olcum listesi1 için
listedeki ilk öğe ( HCN ) CNC makinesinin modelini, ikinci öğe ise CNC işleme makinesinde işlenen bir
parçanın standart ölçüsünü (45mm) verir. Listedeki üçüncü ve sonraki öğeler, parçanın üretimi sırasında
alınan ölçümlerdir. Ölçümlerdeki False değerleri doğru ölçüm alınamadığını gösterir.

olcum İistesil - (“HCN”, 45, 45.018, 44.527, 44.727, False, 44.164, 45.011, 45.549, 45.883, 45.282,
44.525, False, 45.63, 45.866, 44.664, 44.155, 44.334, 45.045, 45.198, 44.834, 45.812, 44.542, 44.603)

olcum İistesi2 - |“VCN”, 55, 55.443, 55.468, False, 55.135, 55.492, 55.815, False, 55.291, 55.908,
55.911, 55.021, 55.445, False, 55.909, 55.744, 55.827, 55.213, 55.421, 55.785, 55.835, 55.386, 55.848,
55.174)

Programınız, değerlendirdiği CNC işleme makinesi bir parçayı üretirken parça için tanımlanan standart
ölçüden ne derece sapma gerçekleştiğini belirlemelidir. Bu amaçla yazacağınız programda;

  1. Parça üretimi sürecinde kaydedilen ölçümlerden ilk kez gerçekleşen 10 ardışık ölçümü içerecek yeni
    bir listeyi (10 elemanlı) belirleyen listeyi duzenle() isimli bir fonksiyon yazmanız,

  2. Belirlenen bu yeni liste üzerinden standart ölçüden sapmaların ortalamasını hesaplayan
    ortalama sapma hesapla|) isimli bir fonksiyon yazmanız,

  3. Bu yeni listedeki 10 ölçüme göre parçanın üretimdeki sapmaların standart sapmasını hesaplayan
    std sapmal) isimli bir fonksiyon yazmanız gerekmektedir.

Örneğin olcum listesi1’de ardışık ve kesintisiz ilk 10 gözlem ikinci False değerinden sonra (listede
gölgelendirilerek işaretlenmiştir) gerçekleşmiştir. Buna göre yazacağınız listeyi duzenle() fonksiyonu
HCN model CNC makinesi için 10 elemanlı (45.63, 45.866, 44.664, 44.155, 44.334, 45.045, 45.198,
44.834, 45.812, 44.542)| ölçüm listesini döndürmelidir. Bu listeyi göndereceğiniz

ortalama sapma hesapla|) fonksiyonu -0.029 mm ortalama sapma değeri (Eşilik 1’deki gibi hesaplanır)
döndürürken, std sapma(l) fonksiyonu 0.5644 mm standart sapma değeri (Eşitlik 2’deki gibi hesaplanır)
döndürmelidir

Programınızın main fonksiyonuna basitçe gösterilmiş hali olcumler İistesi - | '‘HCN’, 45, 45.063,

45.89, …), ‘VCN’, 55, 55.41, 55.74, …), İXNC’, 12.7, 12.5, 13, …),…) olan bir iki boyutlu liste
değerlendirilmesi için gönderilecektir. Programınız kendisine gönderilen iki boyutlu ölçümler listesini
değerlendirip, her bir öğesi İmakine kodu, ortalama sapma, std sapmaj şeklindeki listelerden oluşan iki
boyutlu analiz sonucları listesi oluşturmalıdır. Son olarak, analiz sonucları listesini kullanarak standart
sapması en küçük olan CNC işleme makinesinin kodunu döndürmelidir

Standart sapma : verilerin aritmetik ortalamasını bul, her veri noktasının ortalamadan ne kadar
uzakta oldugunu bulmak icin her veri noktasından ortalamayı cıkartın ve bu farkları kareleyın,
karelerin toplamını bulun, toplamın n-1 e bölümüne kadar olan değeri bulun burana n veri
noktaları sayısıdır, bölümün karekökünü alın.

Online bir OCR ile çevirdim resimden okumakta zorlananlar için. Sadece sondaki standart sapmayı çevirmedi onu da resimden bakabilirsiniz.

Her ne kadar ödevi atıp, şunu çözün gibi bir davranış olsada bu sefer en azından uğraşılmış.

El atın şu ödev kalksın ortadan.

Uğraşacak arkadaşlara kolaylıklar dilerim.

Not: Sadece soruyu biraz düzenledim soran arkadaş adına. Kodun daha düzenlenmeye ihtiyacı var. Adım adım ödev kağıdındaki isterlere göre fonksiyonların düzenlenmesi ve kullandığı formüllerin kontrol edilmesi gerekiyor.

Ortalama sapmanın sonu görünmemiş en son n’ e mi bölüyoruz ?

Daha önce paylaştığı resim buydu, muhtemelen evet “n”.

Benim başka bir kaynaktan bulacağım referans bu.

Cnc kısmına takılmayın. Bir değer ve bu değer dışında üç değer gibi düşünün.

Bu kodu hallederse @makalidap halleder.

Her ne kadar soruyu soran daha önce bize ergen atarı çekmişse de bu sefer biraz uğraşmış lütfen yardımcı olun arkadaşa.

Kolay gelsin.

Not: Çözmeyeceğim diye yemin etmesem kesin halledecektim. Metni falan da almıştım ama yaptı kerata bir yaramazlık ben de kızdım. Ama şu an çözülmesine engl bir durum göremiyorum. Destek atın kardeşimize.

Sayın @BandoLero resmin adı neden zort diye sorar mısın? Dejavu yaşamak istiyorum da.

tabi. resmin adı neden zort ? yoksa teke zortlatmasından mı esinlendiniz ?

bkz. Teke zortlatması - Vikipedi

@makalidap darülaceze baş vekaleti mübarek :smiley:

        if not olcumler:
            olcum_listesi.insert(a, False)
        else:
          olcum_listesi.insert(a, float(olcumler))

Dediğiniz kısmı bu şekilde yapabilirsiniz. Eğer adam "" girerse bunun bool hali false’dir not olcumler dediğimiz için ifin içi devreye girer eksi çarpı eksi artı gibi ve listeye false ekler.
Kodu denediğimde

olcum_listesi.insert(a, float(olcumler))

burada ve

        x=int(input("liste uzunluğunu giriniz"))

burada sayı dışında bir değer girince hata veriyor. Onu engellemek için try except kullanacağız.

while True:
    try:
        x=int(input("liste uzunluğunu giriniz"))
        break
    except ValueError:
        print("Lütfen bir sayı giriniz")

Sonsuz bir döngü kuruyor ve x değerini alıyor eğer adam tam sayı girdiyse hata almadığımız için break devreye giriyor ve döngü kırılıyor eğer tam sayı girmediyse hata veriyor bundan dolayı break devreye girmiyor exceptin içi devreye giriyor hata mesajını yolluyor ve döngü başa döndüğü için tekrar değer alıyor ta ki adam doğru değer girene kadar. Aynısını öbür input için de uyguladım.

            while True:
                olcumler = input("Ölçümleri giriniz")
                try:
                    if not olcumler:
                        olcum_listesi.insert(a, False)
                    else:
                        olcum_listesi.insert(a, float(olcumler))
                    break
                except ValueError:
                    print("Lütfen bir sayı giriniz")

Listeyi ölçümde false gelince listeyi sıfırla yapmışsınız sanırım listeye değer eklemesin yapacaktınız.

def listeyi_duzenle(olcum_listesi):
    yeni_liste = []
    for i in range(len(olcum_listesi)-2):
        if isinstance(olcum_listesi[i+2], float):
            yeni_liste.append(olcum_listesi[i+2])
        elif olcum_listesi[i+2] == False:
            yeni_liste = []
    return yeni_liste

Eğer onu istiyorsanız

        elif olcum_listesi[i+2] == False:
            yeni_liste = []

bu kısmı silerseniz olacaktır. Ama onun yerine daha kısa bir şekilde yapabiliriz.

def listeyi_duzenle(olcum_listesi):
    return list(filter(bool, olcum_listesi))[2:12:]

list(filter(bool, olcum_listesi)) kısmı False,[],0,"",None gibi değerleri siler [2:12:] bu kısım ise listenin 2.indexinden 12.indexine kadar olan ögeleri alıyor.

def ortalama_sapma_hesapla(list):
    toplam = 0
    for b in range(len(list)):
        toplam += (list[b]-list[1])
        ortalama_sapma = (1/(len(list)-2)) * toplam
    return ortalama_sapma

Burayı ise şöyle düzenliyorum.

def ortalama_sapma_hesapla(liste):

    return (sum(liste)-len(liste)*olcum_listesi[1])/len(liste)

listedeki elemanları topla bundan listedeki eleman sayısı * standart ölçüyü çıkar yani hepsinden tek tek çıkarıp sonuçları toplama ile aynı sayıyı elde ediyoruz sonra listenin uzunluğuna böl burda siz değişken adına list vermişsiniz pythonda nesne adlarına list, bool,sum gibi pythonun kendisinde olan isimleri verirseniz kodunuzun ilerisinde bu şeyleri kullanamazsınız.

def std_sapma(liste):

Standart sapmaya gelelim nasıl hesaplanıyormuş veri kümesinin ortalaması alınıyor her veriden çıkarılıyor sonucun karesi alınıyor n-1 e bölünüyor ve karekökü alınıyor.Ortalamayı nasıl alırız listenin toplam / sayı yani sum(liste)/len(liste) şimdi bunu her veriden çıkaracağız sum((i-sum(liste)/len(liste)) for i in liste) i ye listenin içindeki değerleri sırasıyla ata i den ortalamayı çıkar ve sonuçları topla ama karede almak gerekiyor onun için **2 kullanacağız sum((i-sum(liste)/len(liste))**2 for i in liste) şimdi bunu n-1 e bölüyoruz n burada veri sayısı yani len(liste) n-1 de len(liste)-1 olur. sum((i-sum(liste)/len(liste))**2 for i in liste)/(len(liste)-1) ve en sondada bunu karekökü yani 0.5 inci kuvveti

def std_sapma(liste):
        return (sum((i-sum(liste)/len(liste))**2 for i in liste)/(len(liste)-1))**0.5

sonuç olarak böyle bir şey çıkıyor.Tabi

def std_sapma(liste):
    from statistics import stdev
    return stdev(liste)

böyle kütüphanede kullanabilirsiniz size kalmış.

1 Beğeni