2017-01-12 5 views
0

私の目的は、ファイルを実行するときに入力されたいくつかのパラメータを使用して "zerty.txt"ファイルにリストのエントリを書き込むことです。方法TypeError: 'type'オブジェクトは繰り返し使用できません.joinを使用する場合は

私はこのエラーメッセージの多くの答えを読んだので、私は何も分からないものを把握するのに役立っていません。

imgur.com/Gq1HtXb note_code.py:

import etudiant as MP 

liste = [] 

n = int(input("Nb de d'etudiant : ")) 

for i in range(0,n): 
    a = MP.etudiant() 
    a.saisie() 
    liste.append(a) 

print("les étudiants :") 
for p in liste: 
    print("-------") 
    p.affichage() 
    p.save() 

http://imgur.com/VNHEX0Ietudiant.py:

class etudiant: 
    def __init__(self): 
     self.nom = "vide" 
     self.age = 0 

    def saisie(self): 
     self.nom = input("Nom : ") 
     self.note = int(input("note : ")) 

    def affichage(self): 
     print("Son nom est ", self.nom) 
     print("sa note : ", self.note) 

    def save(liste): 
     with open('zerty.txt', mode='wt', encoding='utf-8') as myfile: 
      myfile.write('\n'.join(liste)) 
      myfile.write('\n') 
+0

ヒント: 'p.save()' ...これは何を呼ぶのでしょうか?あなたは 'def save(liste):' –

+0

しか持っていません。それは関数def save(liste)を呼び出します。 – Zenix

+0

'liste'は' self'にするべき別名です。そこにリストを渡そうとしていますか? –

答えて

0

にあなたのオブジェクトを変換するためにいくつかの追加機能が必要があると思いますので、あなただけの、とにかく文字列のリストに参加することができます各ループに入るpはリストではなくetudiantオブジェクトです。

etudiant.py

class etudiant: 
    def __init__(self): 
     self.nom = "vide" 
     self.age = 0 

    def saisie(self): 
     self.nom = input("Nom : ") 
     self.note = int(input("note : ")) 

    def affichage(self): 
     print("Son nom est ", self.nom) 
     print("sa note : ", self.note) 

    def save(self): 
     with open('zerty.txt', mode='at', encoding='utf-8') as myfile: 
      myfile.write('\n'.join([self.nom, self.note])) 
      myfile.write('\n') 

しかし、何が良いだろうことは次のとおりです。:

note_code.py:

私はあなたが何をしたいと思います

は何かに似ています

import etudiant as MP 

liste = [] 

n = int(input("Nombre d'étudiants : ")) 

liste = [MP.etudiant().saisie() for i in range(n)] 

print("les étudiants :") 
with open('zerty.txt', mode='wt', encoding='utf-8') as myfile: 
    for p in liste: 
     print("-------") 
     p.affichage() 
     p.save(myfile) 

etudiant.py:

class etudiant: 
    def __init__(self): 
     self.nom = "vide" 
     self.age = 0 

    def saisie(self): 
     self.nom = input("Nom : ") 
     self.note = int(input("note : ")) 

    def affichage(self): 
     print("Son nom est ", self.nom) 
     print("sa note : ", self.note) 

    def save(self, file_to_save): 
     file_to_save.write('{}\n{}\n'.format(self.nom, self.note)) 

J'espèrequeのCA VOUSオーラ補佐官;-)

+0

メルシーそれは私を助けました;) – Zenix

+0

あなたは[この回答を受け入れる](https://stackoverflow.com/help/someone-answers)を検討するでしょうか? – EvensF

1

あなたのオブジェクトが反復可能ではありません。

def save(liste): 
    ... 
    myfile.write('\n'.join(liste)) # liste is 'self' 

多分あなたはこれを意味しましたか?

def save(self, liste): 

でも、パラメータが必要です。

for p in liste: 
    print("-------") 
    p.affichage() 
    p.save() # here... save what? 'p.save(liste)', maybe? 

そしてノート:cricket_007はあなたがnote_code.pyでlisteを反復している言ったようにあなたは、文字列

+0

私は TypeErrorを持っています:シーケンス項目0 :期待されるstrインスタンス、etudiantが見つかりました – Zenix

+0

確かに。文字列ではなくオブジェクトのリストがあるからです。あなたは文字列のリストに参加することができます –

関連する問題