このプログラムの目標は、ファイルから生徒の名前のリストを読み、その生徒のメールを生成し、そのメールを外部のテキストファイルに保存することです。私は電子メールを正しく生成する関数を書いています。しかし、をnewStudentEmail
という関数で呼び出すと、それらの名前を一般的なテキストファイルから読み込んでいます。私が遭遇している問題は(@ college.edu)がfirstInitial
とlastName
の前に追加されていることです。Pythonの文字列連結問題
例えば、名前Georgeneは、モンテスマはcollege.edugmontezuma
@戻ってくる私は、forループ内でdomain
を連結しようとしていると同じ問題が発生します。誰がなぜこれが起こっているのかについて説明していますか?
def generateEmail(name):
#Generates an email address given a first and last name separated by a comma
firstInitial = str.lower(name[0])
comma = name.find(",")
lastName = str.lower(name[comma+1:])
domain = "@college.edu"
email = firstInitial + lastName + domain
return email
def newStudentEmail():
file = open("newStudents.txt", "r")
header = next(file)
for name in file:
newEmail = print(generateEmail(name),end="")
#outfile = open("newStudentsEmail.txt", "a")
#outfile.write(newEmail)
file.close()
#outfile.close()
していないされるように、あなたは
lastName = str.lower(name[comma+1:])
lastName
は、改行が含まれている場合あなたのコード全体を見渡しましたが、私が今言うことができる改善は、半分(姓と名)を得るためにname.split( "、")を使うことです。カンマの位置を見つけて別々にコピーする必要がありません。 –ありがとう!私はまだそれを学んだことはありませんでしたが、知ることは非常に便利です。 –
'generateEmail'に渡す最初のものは空文字列かコンマのない文字列のどちらかです。それは '@ college.edu'が連結された状態で印刷され、次に生成された電子メールがその横に印刷され、連結の順序が間違っているように見えます。 ---問題はあなたのファイルを読むコードです。 – byxor