Multiple Loops with same variables

There is no problem until the end of the code. At the end, when user inputs 1 or 2 or 3 or 4 it doesn't write anything into the txt. I want user to write number of students at the beginning and name them for txt's. After, I want user to select the success rank for each student linked with table elements and print the chosen element to txt. Where is the problem?

#-*- coding: cp1254 -*
from time import sleep
#---------------------------
bilissel_olay = [
    "Dikkatini çeken nesne/durum/olayı ayrıntılarıyla açıklayabiliyor ve sorular sorabiliyor.",
    "Dikkatini çeken nesne/durum/olaya yönelik sorular sorabiliyor.",
    "Dikkatini çeken nesne/durum/olaya yönelik sorular sormada ve açıklamada desteğe ihtiyacı var.",
    "Dikkatini çeken nesne/durum/olaya yönelik sorular sormada ve açıklamada başarısız."]
bilissel_sayi = [
    "İleriye doğru birer birer ritmik sayabiliyor. Saydığı nesnelerin kaç tane olduğunu söyleyebiliyor ve rakamları tanıyabiliyor.",
    "Saydığı nesnelerin kaç tane olduğunu söyleyebiliyor ve rakamları tanıyabiliyor.",
    "Rakamları tanımakta ve saydığı nesnelerin kaç tane olduğunu söylemekte zorlanıyor."]
bilissel_siniflandirma = [
    "Nesne veya varlıkları çeşitli özelliklerine göre gözlemleyebiliyor, eşleştirebiliyor ve gruplayabiliyor.",
    "Nesne/varlıkları yapıldığı malzemeye göre gruplayabiliyor. Nesne/varlıkları büyüklüklerine göre sıralayabiliyor.",
    "Nesne veya varlıkların tanınmasında desteklenmeli.",
    "Nesne veya varlıkları tanımakta zorluk çekiyor."]
bilissel_olay = [
    "Bir olayın olası nedenlerini söyleyebiliyor. Probleme çeşitli çözüm yolları önerebiliyor.",
    "Olayları oluş zamanına göre sıralayabiliyor.",
    "Neden/sonuç ilişkisi kurmada ve olayların oluş sırasını sıralamada desteklemeli.",
    "Neden/sonuç ilişkisi kurmada ve olayların oluş sırasını sıralamada zorlanıyor."]
bilissel_geometri = [
    "Bir örüntüde eksik bırakılan öğeyi tamamlayabiliyor. Ölçme sonucunu tahmin edebiliyor ve standart olmayan birimlerle ölçebiliyor.",
    "Bir örüntüde eksik bırakılan öğeyi tamamlama yeteneği gelişiyor.",
    "Bir örüntüde eksik bırakılan öğeyi tamamlama konusunda desteklenmeli."]
#---------------------------
ogrenci_listesi = []
x=0
y=eval(input("Lütfen Öğrenci Sayınızı Giriniz:  "))
print ("İşleniyor..")
sleep (2)
# Buraya e okuldan id lerin çekilip id lerin tablolara göre oluşturulduğu kodlar gelecek.
print ("Programın kurulumu için e-okul liste sırasına göre öğrencilerinizi hatırlayabileciğiniz bir isim girmeniz gerekmektedir.")
sleep (2)
while x<y:
    ogrenci= input("Lütfen \(e-okul\)\! sırasına göre %s\. öğrencinin adını giriniz:  " %(x+1))
    f= open('%s.txt' %(ogrenci), 'w')
    ogrenci_listesi.append (ogrenci)
    x=x+1
print ("Öğrenci bilgileri kaydediliyor.")
print (ogrenci_listesi)
sleep(2)
print ("Kurulum tamamlandı. Bilgi girme bölümüne yönlendiriliyorsunuz...")
sleep (2)
print ("""
1) Bilişsel Gelişim
2) Sosyal-Duygusal Gelişim
3) Motor Gelişimi
4) Dil Gelişimi
5) Özbakım""")
gelisim_secim = eval(input("Girdi seçmek istediğiniz bölüm numarasını sadece sayı olarak yazınız:  "))
if gelisim_secim == 1:
    x=0
    y1=y
    while x<y1:

        print (ogrenci_listesi[x]+" adlı öğrenci için lütfen bilişsel alanından aşağıdaki soruları başarı sırasına göre oylayınız.")
        print ("Sorular yükleniyor...")
        sleep(1)
        bilissel_olay_1 = input("Nesne/durum/olayları sıralamada ve sorular sormada (1/2/3/4):  ")

        if bilissel_olay_1 == 1:
            f = open('%s.txt' %(ogrenci_listesi[x]) ,'a')
            f.write(bilissel_olay[3])
        elif bilissel_olay_1 == 2:
            f = open('%s.txt' %(ogrenci_listesi[x]) ,'a')
            f.write(bilissel_olay[2])
        elif bilissel_olay_1 == 3:
            f = open('%s.txt' %(ogrenci_listesi[x]) ,'a')
            f.write(bilissel_olay[1])
        elif bilissel_olay_1 == 4:
            f = open('%s.txt' %(ogrenci_listesi[x]) ,'a')
            f.write(bilissel_olay[0])
        x=x+1

Upvotes: 1

Views: 64

Answers (2)

Lafexlos
Lafexlos

Reputation: 7735

You should close your file to see changes.

f = open('%s.txt' %(ogrenci_listesi[x]) ,'a')
if bilissel_olay_1 == 1:
    f.write(bilissel_olay[3])
elif bilissel_olay_1 == 2:
    f.write(bilissel_olay[2])
elif bilissel_olay_1 == 3:
    f.write(bilissel_olay[1])
elif bilissel_olay_1 == 4:
    f.write(bilissel_olay[0])
x=x+1
f.close() #close the file when you are done writing.

Or better use with() when working with files.

with open('%s.txt' %(ogrenci_listesi[x]) ,'a') as f:
    ...
    #do your stuff.

If you use with, there is no need to close file manually.

Editing in comments which was the actual problem:
Since input returns string, and 1 is integer it will always be False. So either change 1 to "1" or bilissel_olay_1 = int(input())

Upvotes: 3

I changed

bilissel_olay_1 = input("Nesne/durum/olayları sıralamada ve sorular sormada (1/2/3/4):  ")

to

bilissel_olay_1 = int(input("Nesne/durum/olayları sıralamada ve sorular sormada (1/2/3/4):  ")) 

and it worked!

Thank you all!

Upvotes: 1

Related Questions