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

这是一个没有第二名员工的:

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()调用,而是在进入时退出循环: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)

在打印第二个员工之前,您可能还需要测试是否有足够的员工输入:

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为一个数组。

您的第二行将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 回答