为了账号安全,请及时绑定邮箱和手机立即绑定

Python:将用户定义的数据动态插入到二维列表中

Python:将用户定义的数据动态插入到二维列表中

繁星点点滴滴 2021-10-10 14:22:16
我正在尝试为供应商的每周销售额创建一个表,如下所示:Monday    Tuesday    Wednesday    50        80         1054        98         729        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任何帮助,将不胜感激
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

在您的问题中使用列表,稍微改变结构:


weekly_sales_list = [['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],[]]

定义从用户收集数据的方法(from random import randint用于模拟):


def ask_for_input(n):

  tmp = []

  for i in range(7):

      # user_input = input('input value for ' + weekly_sales_list[0][i])

      # print('input value for ' + weekly_sales_list[0][i])

      user_input = randint(0,2) # to simulate user input (from random import randint)

      tmp.append(user_input)

  weekly_sales_list[1].append(tmp)

循环询问用户输入:


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



查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 346 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信