0

我目前正在做一个项目,我需要帮助将列表转换为表格。我已经想出了一种方法,但必须有一种更短、更清洁的方法,我很难弄清楚。我的编码如下(我需要帮助的部分在**底部)

def main():

# Create a list for the sales person    
    sales_persons_list = inputSalesPeople()
    sales_amounts_list = inputSalesAmounts(sales_persons_list)
    displaySalesReport(sales_persons_list, sales_amounts_list)

# Create a list for the sales person
def inputSalesPeople():
    sales_persons_list = []
    count = 0
    while count < 5:
        Name = input("What is the name of the sales person?: ")
        count += 1
        sales_persons_list.append(Name)
    print(sales_persons_list)

    return sales_persons_list

def inputSalesAmounts(sales_persons_list):
    sales_amounts_list = []
    index = 0
    while index < len(sales_persons_list):
        Sales =float(input("How much did " + str(sales_persons_list[index]) + " make in sales?: $"))
        index += 1
        sales_amounts_list.append(Sales)
    print(sales_amounts_list)    

    return sales_amounts_list 

**def displaySalesReport(sales_persons_list, sales_amounts_list):
    Total_Sales = sum(sales_amounts_list)
    print("%-15s %-15s" %("Salespeople","Sales Amount"))
    print("%-15s %-15s" %(sales_persons_list[0],sales_amounts_list[0]))
    print("%-15s %-15s" %(sales_persons_list[1],sales_amounts_list[1]))
    print("%-15s %-15s" %(sales_persons_list[2],sales_amounts_list[2]))
    print("%-15s %-15s" %(sales_persons_list[3],sales_amounts_list[3]))
    print("%-15s %-15s" %(sales_persons_list[4],sales_amounts_list[4]))
    print()
    print("%-15s %-15s" %("Totals", Total_Sales))**

main()

这将显示一个具有正确值的正确表格,但是您可以看到它有点长而且不干净。我怎样才能缩短它?感谢您的帮助!

4

3 回答 3

1

此代码输出等于您的代码输出:)

sales_persons_list = [input('What is the name of the sales person?: ') for i in range(5)]
print(sales_persons_list)
sales_amounts_list = [
    float(input('How much did {} make in sales?:'.format(sales_persons_list[i]))) for i in range(len(sales_persons_list))]
print(sales_amounts_list)
print("%-15s %-15s" %("Salespeople","Sales Amount"))
for i in range(len(sales_amounts_list)):
    print("%-15s %-15s" %(sales_persons_list[i],sales_amounts_list[i]))
print("%-15s %-15s" %("Totals", sum(sales_amounts_list)))

将列表显示为表格代码:

print("%-15s %-15s" %("Salespeople","Sales Amount"))
for i in range(len(sales_amounts_list)):
    print("%-15s %-15s"%(sales_persons_list[i],sales_amounts_list[i]))
print("%-15s %-15s" %("Totals", sum(sales_amounts_list)))

输出

Salespeople     Sales Amount
a               1222.0
aa              1111.0
aaa             2222.0
aaaaa           3333.0
aaaaaa          1133.0
Totals          9021.0
于 2018-07-25T17:11:50.313 回答
0

尝试这个:

def displaySalesReport(sales_persons_list, sales_amounts_list):
    Total_Sales = sum(sales_amounts_list)
    print("%-15s %-15s" %("Salespeople","Sales Amount"))
    for s_person, s_amount in zip(sales_persons_list, sales_amounts_list):
        print("%-15s %-15s" % (s_person, s_amount))
    print("%-15s %-15s" %("Totals", Total_Sales))

这是您的代码的简化版本,您也可以使用 Python Pandas 创建表格,Pandas 最适合表格形式的数据,但它提供的功能远远超出您的需要:

import pandas as pd

data = {'Salespeople': sales_persons_list, 'Sales Amount': sales_amounts_list}
df = pd.DataFrame.from_dict(data)
df.append({'Sales Amount': Total}, index="Total")
print(df)

我的代码是伪代码,您必须对其进行修改以满足您的需要。

于 2018-07-25T16:45:12.550 回答
0

尝试使用许多流行的软件包之一来打印表格 o/p。我的建议是使用tabulate

from tabulate import tabulate
sales_persons_list = list('ABCDE')
sales_amounts_list = list('12345')
print (tabulate(zip(sales_persons_list, sales_amounts_list), tablefmt="plain"))

输出

A  1
B  2
C  3
D  4
E  5
于 2018-07-25T16:49:47.473 回答