-3

実行するユーザー数と電子メールアドレスを入力してcsvファイルを作成するようにユーザーに促したいと思います。構文エラーが発生しています。これを機能させるにはどうすればよいですか?

enter code here

import csv

# Define users 
valid_input = False
while not valid_input:
    users =raw_input('Number of users: ')
    try:
        users = range(0,int(users)
        valid_input = True
    except:
        print "Invalid input"
        pass

First_Name = ["Test"+str(user) for user in range(1, users+1)]
Last_Name = ["User%s" %user for user in users]
email_addresses = []
for user in users:
    email= raw_input("Email domain for user %d: " %user)
    email_addresses.append(last_names[user] + email)
Password = ["Password1" for user in users]
Group =["Test" for user in users]
Admin = ["Yes" for user in users]
# open a file for writing.
# open a file for writing.
with open('users.csv', 'wb') as csv_out:
    writer = csv.writer(csv_out)
    writer.writerows(zip(Email_Address, Password, First_Name, Last_Name, Group, Admin))
4

3 に答える 3

2

この線

Email_Address = (raw_input('Email_Address') [Last_Names + "Email_Address " for Last_Names   inLast_Name]])

は無効な構文です。その行で何をしようとしているかを伝えるのは実際には非常に困難ですが、非常に無効な構文です。

また、Python の反復処理を誤解しているようです。あなたの最初の行では、単一の数字を求めてから、他の複数の場所でそれを反復しようとしますが、これはあなたの意図とはかなりかけ離れていると思います.

users = (raw_input('number of users'))

ユーザーを単一の文字列に等しく設定します。あなたが実際に望んでいるのは、次のようなものだと思います。

valid_input = False
while not valid_input:
    users =raw_input('Number of users: ')
    try:
        users = range(0,int(users))
        valid_input = True
    except:
        print "Invalid input"
        pass

私はコードをもう少し読んでいますが、そこに書いたものとはかなりかけ離れているようですが、ユーザーごとにメールアドレスを入力するようユーザーに求めたいと思います。その場合は、次のようにします。

email_addresses = []
for user in users:
    email = raw_input("Email address for user %d: " %user)
    email_addresses.extend([email + last_name for last_name in last_names])

どうやら私はあなたの意図を誤解していたようです。あなたが探しているものに対する解決策は次のとおりです。

email_addresses = []
for user in users:
    email= raw_input("Email domain for user %d: " %user)
    email_addresses.append(last_names[user] + email)

また、いくつかのスタイル ノート:

  • すべての変数名をできるだけわかりやすいものにしてください。たとえば、取得した last_name リストには実際には姓はありませんが、ユーザー ID が保持されているため、user_ids の方が適切な名前になります。
  • 複数形の命名法を採用する場合は、リストを複数形にしてから、項目が単数形として参照できるようにします。例えば:

    last_name = [#some list] [#last_name の last_names の何か]

混乱するだけです。そのはず:

last_names = [#some_list]
[#something for last_name in last_names]
  • スネーク ケース (like_this) またはタイトル ケース (likeThis) のいずれかを選択し、それを使用します。失われたコードベースをスクロールして、特定の変数がどのケースを使用しているかを把握することほど面倒なことはありません。
于 2013-07-08T14:42:47.057 に答える
0

私はまったくPythonに興味がありませんが、この行の最後に1つの角括弧が多すぎるようです:

Email_Address = (raw_input('Email_Address') [Last_Names + "Email_Address " for Last_Names   inLast_Name]])
于 2013-07-08T14:42:58.533 に答える