Çözüldü Aşırı basit bir Python kodu yazdım ama çalışmıyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Exiliesalpha

Hectopat
Katılım
15 Ocak 2020
Mesajlar
228
Çözümler
4
Yer
Türkiye
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Öncelikle merhabalar, son bir haftadır bununla uğraşıyorum diyebilirim, yazdığım Python (güncel sürüm) kodu ne kendi terminalinde ne de VS Code içerisinde çalışıyor.
Aldığım error "fhand is not defined" oluyor, bazen encoding hatası var diyor, ama şu an aldığım hata file handlerin tanımsız gözükmesi sorunu. Belki kendi bilgisayarımdan kaynaklıdır hiç bilmiyorum ama birisi kendi bilgisayarında çalıştırabiliyorsa ne mutlu bana.

Python:
print('Dosya satır bulucusuna hoş geldin.')
a=input('\ndevam etmek için 1 e çıkmak için ise 2 ye basın.')
if a=='1':
    try:
        ffile=input('DOSYANIN İSMİNİ GİR...:')
        fhand=open(ffile)

    except:
        a=input('Aramaya çalıştığın dosya ismi ya yanlış girildi ya da konumu çok komplike, işte yapabileceğin çözümler.')
        print(a)
        print('1, dosyanın .txt olduğundan emin ol ve içinin de dolu olduğundan emin ol önce dışarıdan dosyayı not defteri ile açıp içini kontrol et.')
        print('2, Dosyanın konumunu .py uzantılı bu dosyanın konumuyla aynı olacak şekilde bir klasöre yerleştir.')
        print('3, Uğraşmak istemiyorsan çıkabilirsin.')
        b=input('çıkmak için 3 e basabilirsin sonra tekrar açıp yanlış olan şeyi düzeltebilirsin.')
        if b==3:
            quit()
   
    sayıLine=0
    uzunluk=fhand.read()
    for line in fhand:
        sayıLine=sayıLine+1
        line=line.rstrip()
        if not line.startswith('A'):
            continue
        c=input('Dosyanda :'+ sayıLine + 'kadar satır bulunuyor.')
        d=input('Dosyanda :'+ uzunluk + 'kadar karakter mevcut, VE BOŞLUKLAR BUNA DAHİL!!')
        f=input('Son olarak dosyanda aramış olduğun tüm satırlar şunlar:')
        print(line)
        g=input('Çıkmak için enter tuşuna basabilirsin')
elif a==2:
    print('TERMINATION CONFIRMED')
    print('CLOSING PROGRAM')
    quit()

Ben nerede hata yaptığımı hala anlayabilmiş değilim.
 
Son düzenleyen: Moderatör:
Çözüm
Merhaba,

İlk gözüme çarpan hata try-except bölümü burada kurgu mantığını düzeltmen lazım. If a == '1' dedikten sonra kullanıcıdan girdi iste ve bunu girdiyi kontrol etmeye çalış. :)

İkincisi hata vermiyor ama Türkçe değişken adları kullanmamaya çalış.

Değişiklikleri yapıp yine yaz. Yine yardımcı olmaya çalışırım.

Saygılarımla.

Tekrardan selamlar,

Öğrenme aşamasında bir sorunla karşılaşıyorsan kodunu sadeleştir (parçala) ve tekrar çalıştırmaya çalış. Bu şekilde hatalarını daha kolay bulup ilerlersin. Örneğin, senin kodun için konuşacak olursam, sadece satır sayısını gösteren kısma odaklan burası düzgün olunca diğer kısımları parça parça bu koda ekle.

Ben öğrenme aşamasında bu şekilde yapıyordum. Çıkan hataların ne olduğunu öğrenip, düzeltip, tecrübe edinmeye çalışıyordum. Zamanla tecrübe edindikçe kodu parçalamadan düzeltmeye başlayacaksın. 👍

Bonus: Eğer print içinde tırnak öncesinde f (formated string'in kısaltması) yazarsan tırnak içinde süslü parantez içinde kullandığın kelimeler değişken isimleri olur ve istediğin değişkeni yazdırabilirsin. (Kurallar dahilinde)

Bonus 2: 1. paragrafta sana bahsettiğim sadeleştirilmiş kod; aşağıdaki resimde yer alıyor. Eğer sıkışırsan buraya bakabilirsin. :) Bu kodun kelime sayısı, uzunluğu gibi kısımlarını ekleyip kendin denemeye devam edebilirsin.

Kolay gelsin.

Saygılarımla.

Screen Shot 2022-09-03 at 01.46.15.png

Screen Shot 2022-09-03 at 01.35.51.png
Öncelikle 18. satırda yazdığın fhand.read() bir uzunluk alma fonksiyonu değil, okuma fonksiyonu. Bu yüzden adını contents yapardım ben olsam.

19. satırda da dosya nesnesi üzerinde loop'lamaya çalışıyorsun, bu mümkün değil okuman ve satırlara bölmen gerekiyor diye tahmin ediyorum. Okuyup satırlara bölünmüş bir array elde ettikten sonra onun üzerinde loop'lamalısın.
 
Merhaba,

İlk gözüme çarpan hata try-except bölümü burada kurgu mantığını düzeltmen lazım. If a == '1' dedikten sonra kullanıcıdan girdi iste ve bunu girdiyi kontrol etmeye çalış. :)

İkincisi hata vermiyor ama Türkçe değişken adları kullanmamaya çalış.

Değişiklikleri yapıp yine yaz. Yine yardımcı olmaya çalışırım.

Saygılarımla.

Tekrardan selamlar,

Öğrenme aşamasında bir sorunla karşılaşıyorsan kodunu sadeleştir (parçala) ve tekrar çalıştırmaya çalış. Bu şekilde hatalarını daha kolay bulup ilerlersin. Örneğin, senin kodun için konuşacak olursam, sadece satır sayısını gösteren kısma odaklan burası düzgün olunca diğer kısımları parça parça bu koda ekle.

Ben öğrenme aşamasında bu şekilde yapıyordum. Çıkan hataların ne olduğunu öğrenip, düzeltip, tecrübe edinmeye çalışıyordum. Zamanla tecrübe edindikçe kodu parçalamadan düzeltmeye başlayacaksın. 👍

Bonus: Eğer print içinde tırnak öncesinde f (formated string'in kısaltması) yazarsan tırnak içinde süslü parantez içinde kullandığın kelimeler değişken isimleri olur ve istediğin değişkeni yazdırabilirsin. (Kurallar dahilinde)

Bonus 2: 1. paragrafta sana bahsettiğim sadeleştirilmiş kod; aşağıdaki resimde yer alıyor. Eğer sıkışırsan buraya bakabilirsin. :) Bu kodun kelime sayısı, uzunluğu gibi kısımlarını ekleyip kendin denemeye devam edebilirsin.

Kolay gelsin.

Saygılarımla.

Screen Shot 2022-09-03 at 01.46.15.png

Screen Shot 2022-09-03 at 01.35.51.png
 
Son düzenleme:
Çözüm
Merhaba,

İlk gözüme çarpan hata try-except bölümü burada kurgu mantığını düzeltmen lazım. If a == '1' dedikten sonra kullanıcıdan girdi iste ve bunu girdiyi kontrol etmeye çalış. :)

İkincisi hata vermiyor ama Türkçe değişken adları kullanmamaya çalış.

Değişiklikleri yapıp yine yaz. Yine yardımcı olmaya çalışırım.

Saygılarımla.

Tekrardan selamlar,

Öğrenme aşamasında bir sorunla karşılaşıyorsan kodunu sadeleştir (parçala) ve tekrar çalıştırmaya çalış. Bu şekilde hatalarını daha kolay bulup ilerlersin. Örneğin, senin kodun için konuşacak olursam, sadece satır sayısını gösteren kısma odaklan burası düzgün olunca diğer kısımları parça parça bu koda ekle.

Ben öğrenme aşamasında bu şekilde yapıyordum. Çıkan hataların ne olduğunu öğrenip, düzeltip, tecrübe edinmeye çalışıyordum. Zamanla tecrübe edindikçe kodu parçalamadan düzeltmeye başlayacaksın. 👍

Bonus: Eğer print içinde tırnak öncesinde f (formated string'in kısaltması) yazarsan tırnak içinde süslü parantez içinde kullandığın kelimeler değişken isimleri olur ve istediğin değişkeni yazdırabilirsin. (Kurallar dahilinde)

Bonus 2: 1. paragrafta sana bahsettiğim sadeleştirilmiş kod; aşağıdaki resimde yer alıyor. Eğer sıkışırsan buraya bakabilirsin. :) Bu kodun kelime sayısı, uzunluğu gibi kısımlarını ekleyip kendin denemeye devam edebilirsin.

Kolay gelsin.

Saygılarımla.

Eki Görüntüle 1505333
Eki Görüntüle 1505328
Öncelikle 18. satırda yazdığın fhand.read() bir uzunluk alma fonksiyonu değil, okuma fonksiyonu. Bu yüzden adını contents yapardım ben olsam.

19. satırda da dosya nesnesi üzerinde loop'lamaya çalışıyorsun, bu mümkün değil okuman ve satırlara bölmen gerekiyor diye tahmin ediyorum. Okuyup satırlara bölünmüş bir array elde ettikten sonra onun üzerinde loop'lamalısın.
İkinize de cevaplarınız için teşekkür ederim dediklerinizi deneyeceğim, fakat bazen oluşturduğum .txt uzantılı dosyalar aynı klasörde bulunmalarına rağmen python tarafından görülmüyorlar. Bunu nasıl önlerim, yazdığım kodların yanlışlığından dolayı mı böyle oluyor?
 
Merhaba,

.txt dosyalarınız aynı klasörde ise bir değişiklik yapmıyorsanız, bir çalışıp çalışmamazlık yapmaması gerekiyor. Kodunuzu kontrol ediniz. Kullanıcı dosya ismi girdisinde boşluk vs var mı bunları kontrol ediniz ve düzeltiniz.

Adım adım hataları bulup tecrübe edineceksiniz. 👍

Saygılarımla.
 

Yeni konular

Geri
Yukarı