Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Harf Notuyla Genel Ortalama Hesaplama
#1
Merhaba arkadaşlar harf notunuzu girerek genel ortalamanızı hesaplayabileceğiniz kod yazmıştım.Sonra nasıl geliştirebilirim ve işlevsel kullanabilirim diye düşünüp bir kaç özellik ekleyerek sizle paylaşıyorum.Çok bilgi sahibi değilim python ve kodlama hakkında o yüzden eleştirilerinizi bol bol bekliyorum(şu kısmı daha kısa yoldan şöyle yapabilirsin vs. ya da böyle bir özellikle daha güzel olur gibi).
iki dosyamız var genelorthesap.py ve notlarım.py ikisini de aynı klasörde tutun
notlarım.py içinde sadece iki tane değişken bulunuyor kayıtlı puanınızı ve kredinizi tutuyor burada.
genelorthesap.py dosyasını çalıştırıyorsunuz ve kodumda 4  seçenek var:
  • 1'i seçerek kayıtlı notlarınızla beraber yeni not girerek ortalama hesaplıyorsunuz
  • 2'i seçerek not kaydediyorsunuz ve mevcut notlarınız kayıtlı tutarak bir daha hesap yaparken kolaylık sağlıyor.
  • 3'ü seçerek tüm kayıtlı notlardan bağımsız keyfinize göre ortalama hesaplayabilirsiniz
  • 4'ü seçerek kaydettiğiniz notlarınızla mevcut genel ortalamanızı görüntülüyebiliyorsunuz.

genelorthesap.py kodlarım
PHP Kod:
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 16 13:00:12 2019

@author: pc
"""
import sys,os
yer 
str(os.path.dirname(os.path.abspath(sys.argv[0])))+os.sep
import notlarım 
as f
topnote
=0
topkredi
=0
d
=open(yer+"notlarım.py","a+")
a=0
print("\n","Kayıtlı Notlarınla Ortalama Hesaplamak için 1 yaz","\n",
 
     "Not Kaydetmek için 2 yaz","\n",
 
     "Kayıtlılardan Bağımsız Ortalama Hesaplamak için 3 yaz","\n",
 
     "Kayıtlı Genel Ortalamanı Görüntülemek için 4 yaz")
kayıt=int((input("Seçimini Yaz ")))
if 
kayıt ==1:
 
   sec=int(input("Kaç Ders Gireceksiniz? "))
 
   while a<sec:
 
       kredi=int(input("Ders Kredisi "))
 
       note=str(input("Harf Notu "))
 
       note=note.upper()
 
       a=a+1
        if note
== "AA":
 
           note=float(4.00)
 
       elif note== "BA":
 
           note=float(3.50)
 
       elif note== "BB":
 
           note=float(3.00)
 
       elif note== "CB":
 
           note=float(2.50)
 
       elif note== "CC":
 
           note=float(2.00)
 
       elif note== "DC":
 
           note=float(1.50)
 
       elif note== "DD":
 
           note=float(1.00)
 
       elif note== "FD":
 
           note=float(0.50)
 
       elif note== "FF":
 
           note=float(0.00)
 
       topnote=kredi*note+topnote
        topkredi
=topkredi+kredi
    print
("Kayıtlı Notlarla Beraber Genel Ortalamanız ",(f.topnotes+topnote)/(f.topkredis+topkredi))
 
   d.close()
elif kayıt ==2:
 
   sec=int(input("Kaç Ders Kaydedeceksin? "))
 
   while a<sec:
 
       kredi=int(input("Ders Kredisi "))
 
       note=str(input("Harf Notu "))
 
       note=note.upper()
 
       a=a+1
        if note
== "AA":
 
           note=float(4.00)
 
       elif note== "BA":
 
           note=float(3.50)
 
       elif note== "BB":
 
           note=float(3.00)
 
       elif note== "CB":
 
           note=float(2.50)
 
       elif note== "CC":
 
           note=float(2.00)
 
       elif note== "DC":
 
           note=float(1.50)
 
       elif note== "DD":
 
           note=float(1.00)
 
       elif note== "FD":
 
           note=float(0.50)
 
       elif note== "FF":
 
           note=float(0.00)
 
       topnote=kredi*note+topnote
        topkredi
=topkredi+kredi
    f
.topnotes=f.topnotes+topnote
    f
.topkredis=f.topkredis+topkredi
    d
.close()
 
   d=open(yer+"notlarım.py","w")
 
   d.write("topnotes=")
 
   d.write(str(f.topnotes))
 
   d.write("\n")
 
   d.write("topkredis=")
 
   d.write(str(f.topkredis))
 
   d.close()
 
   print("*****KAYDEDİLDİ*****")
elif kayıt ==3:
 
   sec=int(input("Kaç Ders Gireceksiniz? "))
 
   while a<sec:
 
       kredi=int(input("Ders Kredisi "))
 
       note=str(input("Harf Notu "))
 
       note=note.upper()
 
       a=a+1
        if note
== "AA":
 
           note=float(4.00)
 
       elif note== "BA":
 
           note=float(3.50)
 
       elif note== "BB":
 
           note=float(3.00)
 
       elif note== "CB":
 
           note=float(2.50)
 
       elif note== "CC":
 
           note=float(2.00)
 
       elif note== "DC":
 
           note=float(1.50)
 
       elif note== "DD":
 
           note=float(1.00)
 
       elif note== "FD":
 
           note=float(0.50)
 
       elif note== "FF":
 
           note=float(0.00)
 
       topnote=kredi*note+topnote
        topkredi
=topkredi+kredi
    print
("Hesaplanılan Genel Ortalamanız ",topnote/topkredi)
elif kayıt ==4:
 
   print("Kayıtlı Genel Ortalamanız",f.topnotes/f.topkredis)
 
    

notlarım.py
PHP Kod:
topnotes=0
topkredis
=


Ek Dosyalar
.py   genelorthesap.py (Dosya Boyutu: 3.41 KB / İndirme Sayısı: 2)
.py   notlarım.py (Dosya Boyutu: 23 Bayt / İndirme Sayısı: 2)
Ara
Cevapla
#2
Öncelikle python üzerine kendi kendine bir şeyler yaptığın ve be bu dili öğrenmeye çalıştığın için seni tebrik ederim Smile

Şimdi python'da yeni olduğun için mutlaka eskliklerin var, o yüzden kodlarında da bir çok tavsiye verilmesi gereken yerler mevcut Smile

Ufak ayrıntıları illaki kendin de tamamlarsın kaynaklardan öğrenerek, veya vakti zamanı geldiğinde sorarak. Ama ben daha çok kodun verimli kullanılması konusunda bir tavsiye vermek istiyorum. Seçeneklerin çoğunda puan sistemine göre birden çok koşul koymuşsun ve bunlar baya bir yer kaplıyor. Daha pratik olmak adına ve ek bilgi vermek adına sözlük yapısını kullanmanı öneririm. Çünkü "Harf Notu" ve puanlamaları hep aynı sanırım.

örnek:

note = input("Harf Notu")
note=note.upper()

harf_notları = {"AA": 4.00, "BA": 3.50} #2 tane yazdım sen çoğaltırsın
note = harf_notları[note]

bu kadar Smile

bu işlemden sonra 9 tane koşul belirtmektense kodun en başına "harf_notları" diye sözlükten oluşan değişken tanımla ve bunu her döngüde sadece
note = harf_notları[note]
şeklinde çağır.

Bir de notlarım.py içerisinde bir kod betiği yok, o yüzden import etmektense içindekileri farklı bir global değişken olarak kod içinde belirmen daha uygun olur diye düşünüyorum.

Not: ufak ayrıntılara değinmek istemedim ama yine de demeden geçemeyeceğim, input py3'te zaten string'dir, tekrar str() fonksiyonunu kullanmaya gerek yok, integer için int() kullanılabilir tabiki. Bir de 4.00 zaten float'tır ama 4 integer'dır v.b. Smile
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#3
(18-06-2019, Saat: 23:02)gecemor Nickli Kullanıcıdan Alıntı:  Öncelikle python üzerine kendi kendine bir şeyler yaptığın ve be bu dili öğrenmeye çalıştığın için seni tebrik ederim Smile

Şimdi python'da yeni olduğun için mutlaka eskliklerin var, o yüzden kodlarında da bir çok tavsiye verilmesi gereken yerler mevcut Smile

Ufak ayrıntıları illaki kendin de tamamlarsın kaynaklardan öğrenerek, veya vakti zamanı geldiğinde sorarak. Ama ben daha çok kodun verimli kullanılması konusunda bir tavsiye vermek istiyorum. Seçeneklerin çoğunda puan sistemine göre birden çok koşul koymuşsun ve bunlar baya bir yer kaplıyor. Daha pratik olmak adına ve ek bilgi vermek adına sözlük yapısını kullanmanı öneririm. Çünkü "Harf Notu" ve puanlamaları hep aynı sanırım.

örnek:

note = input("Harf Notu")
note=note.upper()

harf_notları = {"AA": 4.00, "BA": 3.50} #2 tane yazdım sen çoğaltırsın
note = harf_notları[note]

bu kadar Smile

bu işlemden sonra 9 tane koşul belirtmektense kodun en başına "harf_notları" diye sözlükten oluşan değişken tanımla ve bunu her döngüde sadece
note = harf_notları[note]
şeklinde çağır.

Bir de notlarım.py içerisinde bir kod betiği yok, o yüzden import etmektense içindekileri farklı bir global değişken olarak kod içinde belirmen daha uygun olur diye düşünüyorum.

Not: ufak ayrıntılara değinmek istemedim ama yine de demeden geçemeyeceğim, input py3'te zaten string'dir, tekrar str() fonksiyonunu kullanmaya gerek yok, integer için int() kullanılabilir tabiki. Bir de 4.00 zaten float'tır ama 4 integer'dır v.b. Smile
Sozluk kullanmak hic aklima gelmedi hocam teşekkür ederim.diger py dosyasına yazdigim degiskenleri ayni dosya icine koymayi dusundum ama ayni dosya icindeyken program kapandiktan sonra tekrar sifirlanir diye tahmin ettim yani son aldigi deger kalici olarak kalmaz diye biliyodum ama boyle soylediginize gore buyuk ihtimal bi yolu var.
integer float olarak belirtmekte bazen takinti oluyo ya hata almiyim aman garanti olsun diye ne varsa koyuyorum Big Grin tekrardan teşekkür ederim
Ara
Cevapla
#4
Ha sen son değişen bilgileri yedekliyosun notlarım.py içerisine, dikkatimdem kaçmış. Genelde veri yedeklemek için veritabanı kullanılır; yapılandırma ve ayar dosyaları için ini, conf, json; çıktı için de log veya txt.

veritabanı için bilgiler yeteri kadar büyük veya fazla olmadığından uygun değil şimdilik, bunun için yapılandırma dosyalama kullanabilirsin. Madem sözlük falan dedik, o zaman json kaydı yapabilirsin. Zaten ileride json veri işlemeyi de öğrenmen gerekeceği için şimdiden öğrenmekte fayda var.

notlarım = {"topnotes":0, "topkredis":0}
dedikten sonra sözlükleri işlemesini az çok biliyosundur,

içeriğe ulaşmak için
topkredis = notlarım["topkredis"]

değişiklik yapmak için
notlarım["topkredis"] = 12

bu sözlüğü, bir diğer deyişle Json verisini dosyalamak için

import json

dosya = open("notlarım.json","w")
json.dump(notlarım, dosya)
dosya.close()

çağırırken de

dosya = open("notlarım.json").read()
notlarım = json.loads(dosya)

Eğer kafa karıştırıcı geldiyse şimdilik kendi bildiğin yöntemleri kullanabilirsin ama bunları da aklında bulundurmanda fayda var.
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#5
teşekkür ederim json'u araştıracağım
Ara
Cevapla

{lang: 'en'}


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Python ile harf çeviren fonksiyon. oktay811 7 3,601 06-11-2020, Saat: 16:07
Son Yorum: gecemor
  GÜNCEL Ortalama Hesaplama Umutrc 17 14,819 17-06-2019, Saat: 12:24
Son Yorum: caminci
  GÜNCEL Vize puanına göre Final puanı Hesaplama *Üniversite Umutrc 10 11,166 12-04-2017, Saat: 12:55
Son Yorum: Umutrc
  GÜNCEL Günluk Internet Kullanım Kotası Hesaplama burak160731 36 34,287 01-12-2016, Saat: 16:01
Son Yorum: hkrgln

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi
Change Theme