1

Python 2.7.5 を使用して配列に挑戦し始めました。私の目的は、ユーザーに入力を求め、入力を複数の配列に保存することです。

これまでのところ、入力を含む複数の配列を格納する限り、これは私が持っているものです。最後に入力を印刷しようとするとエラーが発生します。

ここに私がこれまでに持っているコードがあります。

# want user to enter a list of employee names, error occurs when trying to recall user entry

emp_name = [0] 
emp_name = raw_input("please enter employee name") 

while emp_name !="neg":
    emp_name = raw_input("please enter employee name,enter neg to exit")

print "employee 2 is:", emp_name[1] #I want the 2nd name entered to appear 
4

3 に答える 3

2

次に、次のことを行います。

  1. リストが入力と同じ名前にならないように、変数の名前を変更します。
  2. 取得した各名前をリストに追加します。

これはあなたが望むものでなければなりません:

employees = []
name = raw_input("Please enter an employee name: ") 

while name != "neg":
    # Append the previous name.
    employees.append(name)
    # Get a new name.
    name = raw_input("Please enter an employee name or 'neg' to exit: ")

# You need a try/except here in case there is no second employee.
# This can happen if the user types in "neg" to begin with or only 1 name.
try:
    print "Employee 2 is: ", employees[1]
except IndexError:
    print None

また、入力プロンプトを少し変更して、よりクリーンで使いやすいものにしました。

以下は、実行中のスクリプトのサンプルです。

Please enter an employee name: Bob
Please enter an employee name or 'neg' to exit: Joe
Please enter an employee name or 'neg' to exit: neg
Employee 2 is:  Joe

そして、これは2番目の従業員のいないものです:

Please enter an employee name: Joe
Please enter an employee name or 'neg' to exit: neg
Employee 2 is:  None
于 2013-10-31T15:21:37.263 に答える
1

を使用してリストに追加できますが、ユーザー入力をの変数list.append()にキャプチャする必要があります。

employees = []
emp_name = raw_input("Please enter employee name, enter neg to exit")

while emp_name != "neg":
    emp_name = raw_input("Please enter employee name, enter neg to exit")
    employees.append(emp_name)

print "employee 2 is:", employees[1] 

名前のリストとユーザーが入力した名前に別々の変数を使用する以外に、完全に空のリストを開始しました。

ループを無限ループにraw_input()変更することで 2 回の呼び出しを避けることができ、代わりに が入力されたときにループから抜け出します。while'neg'

employees = []

while True:
    emp_name = raw_input("Please enter employee name, enter neg to exit")
    if emp_name == 'neg':
        break
    employees.append(emp_name)

2 番目の従業員を印刷する前に、十分な数の従業員が入力されているかどうかをテストする必要がある場合もあります。

if len(employees) > 1:
    print "Employee 2 is:", employees[1] 
else:
    print "You didn't enter enough employees!"
于 2013-10-31T15:20:40.753 に答える
1

最初の行emp_nameは配列として宣言しています。

2 行目raw_input("please enter employee name")で文字列として再割り当てします。

そのため、に伝えると、その時点で文字列が表示されるため、何がprint emp_name[1]何であるかがわかりません。emp_name[1]

代わりに、次のように記述します。

emp_name[0] = raw_input("please enter employee name")

つまり、その従業員名をarrayの要素 0に割り当てているということです。 emp_name

次に、それらを再割り当てするのではなく、内にインデックス エントリを追加します (ご覧のとおり、エントリは自動的に蓄積されません。そのように指示する必要があります)。while

ハッピーコーディング!

于 2013-10-31T15:22:16.883 に答える