Python:将用户定义的数据动态插入到二维列表中
我正在尝试为供应商的每周销售额创建一个表,如下所示:Python:将用户定义的数据动态插入到二维列表中,python,list,multidimensional-array,Python,List,Multidimensional Array,我正在尝试为供应商的每周销售额创建一个表,如下所示: Monday Tuesday Wednesday 50 80 10 54 98 7 29 40 80 我正在尝试让用户插入每日销售额,以下是我目前的情况: weekly_sales_list = [['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
Monday Tuesday Wednesday
50 80 10
54 98 7
29 40 80
我正在尝试让用户插入每日销售额,以下是我目前的情况:
weekly_sales_list = [['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', []]]
for i in range(len(weekly_sales_list)):
for j in range(len(weekly_sales_list[i])):
weekly_sales_list[i][j] = input('input value for ' + weekly_sales_list[i][j])
print(weekly_sales_list)
我不确定这是否是设置二维列表的最佳方法,我还收到以下错误:
TypeError: can only concatenate str (not "list") to str
任何帮助都将不胜感激请使用字典,以周名称为键,以周数据为值
import itertools
data = {'Monday':[],
'Tuesday':[],
'Wednesday':[],
'Thursday':[],
'Friday':[],
'Saturday':[],
'Sunday':[]}
while 1:
info = input('Enter day and value (e.g. "Monday 26") or nothing to stop: ')
if not info:
break
k,v = info.split()
data[k].append(v)
然后通过显示标题打印表格:
print(*(f'{day:<10}' for day in data))
样本输入:
Enter day and value (e.g. "Monday 26") or nothing to stop: Monday 3
Enter day and value (e.g. "Monday 26") or nothing to stop: Monday 4
Enter day and value (e.g. "Monday 26") or nothing to stop: Monday 5
Enter day and value (e.g. "Monday 26") or nothing to stop: Tuesday 6
Enter day and value (e.g. "Monday 26") or nothing to stop: Tuesday 7
Enter day and value (e.g. "Monday 26") or nothing to stop: Wednesday 8
Enter day and value (e.g. "Monday 26") or nothing to stop: Thursday 9
Enter day and value (e.g. "Monday 26") or nothing to stop:
样本结果:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
3 6 8 9
4 7
5
使用问题中的列表,稍微改变结构:
weekly_sales_list = [['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],[]]
定义一种从用户处收集数据的方法(从模拟的随机导入randint
):
循环询问用户输入:
for n in range(3):
# print('week - ' + str(n) )
ask_for_input(n)
准备数据和表格以便打印:
tot_per_day = [sum(col) for col in zip(*weekly_sales_list[1])]
tot_per_day = tot_per_day + [sum(tot_per_day)]
headers = weekly_sales_list[0] + ['total']
row_format ="{:>12}"*9
然后打印:
print (row_format.format("", *headers))
for row in weekly_sales_list[1]:
print (row_format.format("", *(row + [sum(row)])))
print ("-"*12*9)
print (row_format.format("", *tot_per_day))
这是一个随机结果:
# Monday Tuesday Wednesday Thursday Friday Saturday Sunday total
# 0 1 1 0 2 0 1 5
# 1 2 0 2 0 0 1 6
# 1 2 0 0 1 0 2 6
# ------------------------------------------------------------------------------------------
# 2 5 1 2 3 0 4 17
每周销售的目的是什么?代码的其余部分从不使用它。它使用
每周销售清单
,你应该把它放在问题中。我认为你想每周销售清单中的日销售
,你不应该使用范围(len(str(…))
你发布的代码中似乎有缩进错误。这是最小的问题,这可能只是一个复制错误。
print (row_format.format("", *headers))
for row in weekly_sales_list[1]:
print (row_format.format("", *(row + [sum(row)])))
print ("-"*12*9)
print (row_format.format("", *tot_per_day))
# Monday Tuesday Wednesday Thursday Friday Saturday Sunday total
# 0 1 1 0 2 0 1 5
# 1 2 0 2 0 0 1 6
# 1 2 0 0 1 0 2 6
# ------------------------------------------------------------------------------------------
# 2 5 1 2 3 0 4 17