将Python3.6.5列表转换为选项卡

2024-05-14 17:07:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在一个项目上工作,我需要帮助将列表转换为表。我已经想出了一个办法,但必须有一个更短,更干净的方法来做这件事,我有一个困难,弄清楚。我的代码如下(我需要帮助的部分在**的底部)

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()

这将显示具有正确值的正确表,但正如您所看到的,它有点长而且不干净。我怎样才能缩短它?谢谢你的帮助!你知道吗


Tags: theforindexmaindefcountcreatelist
3条回答

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

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

尝试使用许多流行的软件包中的一个来打印表格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

试试这个:

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)

我的代码是伪代码,你必须修改它以满足你的需要。你知道吗

相关问题 更多 >

    热门问题