【问题标题】:Python 3 - How to print multiple elements from different arrays on a line?Python 3 - 如何在一行上打印来自不同数组的多个元素?
【发布时间】:2017-04-18 18:19:39
【问题描述】:

我有 3 个大小为 5 的数组,一个包含姓名字符串,另一个与他们的年龄相关,另一个与他们的薪水相关。

这是我第一次使用 Python,所以我习惯了 Java 语法,但我不确定我是否正确。

我有以下两行:

for i in range(5):
    name = raw_input("Enter a person's name: ")
    nameArray.append(str(name))
    age = raw_input("What is their age: ")
    ageArray.append(int(age))
    salary = raw_input("How much do they make: ")
    salaryArray.append(int(salary))

for j in range(5):
    print(nameArray + ' is ' + ageArray + ' years old and makes $' + salary)

【问题讨论】:

  • 你需要使用indexnameArray[j]等等......你正在使用python2或python3。我对raw_input() 方法有疑问。
  • 您几乎可以肯定使用的是 lists 而不是数组。在 python 中,“数组”应该用于专门指代array.arraynumpy.array 类型,而不是列表。虽然您肯定会看到该术语的草率使用,但最好是准确的。 Python 列表与 Java 数组非常不同,它们更像 Java 中的ArrayList<Object>

标签: python arrays python-3.x printing


【解决方案1】:

使用字典来反映您对具有姓名、年龄和薪水的员工的兴趣,而不是隐含相关的列表。

employees = []
for i in range(5):
    name = raw_input("Enter a person's name: ")
    age = raw_input("What is their age: ")
    salary = raw_input("How much do they make: ")
    employees.append({"name": name, "age": age, "salary": salary})

for emp in employees:
    print('{name} is {age} years old and makes ${salary}'.format(**emp))

【讨论】:

    【解决方案2】:

    您需要关心lists 与数组几乎相同,并且如果您要访问任何特定列表中的元素,则需要提供索引,就像在 java 中使用数组一样。

    更新代码

    nameArray = []
    ageArray = []
    salaryArray = []
    for i in range(5):
        name = input("Enter a person's name: ")
        nameArray.append(str(name))
        age = input("What is their age: ")
        ageArray.append(int(age))
        salary = input("How much do they make: ")
        salaryArray.append(int(salary))
    
    for j in range(5):
        print(nameArray[j] + ' is ' + str(ageArray[j]) + ' years old and makes $' + str(salaryArray[j]))
    

    The Byte of Python 不错的书,让您重新开始。

    如果您正在使用 python2 并且只想打印结果而不存储 :-)

    for i in range(5):
        print "{} is {} years old and makes {}".format(raw_input("Enter a person's name: "),raw_input("What is their age: "),raw_input("How much do they make: "))
    

    【讨论】:

    • 我在设置名称并要求输入名称的行中遇到回溯和名称错误。是因为我将 raw_input 更改为 input 吗?我在网上读到 raw_input 返回一个字符串,而 input 返回一个“表达式?”
    • 如果你使用 python3 你应该使用input 它将返回str。阅读文档以获得更好的说明。或阅读this
    【解决方案3】:

    欢迎来到蟒蛇。这是一个奇妙的兔子洞:)

    你正在尝试做的工作(有一些调整)但不是最 Pythonic 的方法 首先是您的尝试:使用 input 而不是 raw_input,其次,您需要先定义数组(在 python 中称为列表),然后才能追加

    例如

    nameArray = []
    ageArray = []
    salaryArray = []
    
    for i in range(5):
        name = input("Enter a person's name: ")
        nameArray.append(str(name))
        age = input("What is their age: ")
        ageArray.append(int(age))
        salary = input("How much do they make: ")
        salaryArray.append(int(salary))
    
    for j in range(5):
        print(nameArray[j] + ' is ' + ageArray[j] + ' years old and makes $' + salaryArray[j])
    

    然而,使用 dict 更好(也就是 Pythonic)。看下面的例子:

    persons = []
    for i in range(5):
        name   = input("Enter a person's name: ")
        age    = input("What is their age: ")
        salary = input("How much do they make: ")
        person = {'name' : name, 'age' : int(age), 'salary' : int(salary)}
        persons.append(person)
    
    for person in persons:
        print(person['name'], 'is', str(person['age']), 'years old and makes $', str(person['salary']))
    

    【讨论】:

    • 但是,对于这种情况,我建议使用 dict。例如person = {'name' : n, 'age' : a, 'salary' : s} 然后将 person 附加到人员列表中。这样可以确保数据保持在一起。使用 3 个单独的数组,可以添加或删除数组中的一个或多个条目而不更新任何其他条目。
    • 请更新答案,检查最后一行的错误。还可以在您的答案中添加 dict 实现或解释,这会有所帮助。
    【解决方案4】:

    据我所知,这段代码将有助于解决您的问题:-

    nameArray=[]
    ageArray=[]
    salaryArray=[]
    for i in range(2):
        name = raw_input("Enter a person's name: ")
        nameArray.append(name)
        age = raw_input("What is their age: ")
        ageArray.append(age)
        salary =raw_input("How much do they make: ")
        salaryArray.append(salary)
    
    for j in range(2):
        print(nameArray[j] + ' is ' + ageArray[j] + ' years old and makes $' + salaryArray[j])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多