2016-01-19 3 views
1

Нет проблем до конца кода. В конце, когда пользователь вводит 1 или 2 или 3 или 4, он ничего не пишет в txt. Я хочу, чтобы пользователь записывал количество учеников в начале и назовет их для txt. После этого я хочу, чтобы пользователь выбирал ранжирование успеха для каждого ученика, связанного с элементами таблицы, и печатал выбранный элемент в txt. В чем проблема?Несколько циклов с одинаковыми переменными

#-*- 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 
+0

Какая ошибка вы получаете? В какой строке он говорит вам, что он включен? – mauve

+0

@mauve Ошибка не возникает. Он просто не пишет текстовый файл. –

+1

Вы должны изолировать код обработки файлов, чтобы сделать небольшую воспроизводимую проблему. См. Здесь: https://stackoverflow.com/help/mcve –

ответ

3

Вы должны закрыть ваш файл, чтобы увидеть изменения.

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. 

Или лучше использовать with() при работе с файлами.

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

Если вы используете with, нет необходимости close файла вручную.

Редактирование в комментариях, которая была актуальной проблемой:
С input возвращается string и 1 это целое всегда будет False. Так что либо изменить 1 к "1" или bilissel_olay_1 = int(input())

+0

По-прежнему нет данных внутри txt. Я думаю, что проблема - это отступы. –

+0

Можете ли вы изменить 'f.write'' '' print', чтобы узнать, входит ли ваш код в эти блоки 'if'? – Lafexlos

+0

Я изменил их так, как если бы bilissel_olay_1 == 1: print ("deneme") Но код печати не работал: S –

1

Я изменил

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

в

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

и это сработало!

Спасибо всем!

Смежные вопросы