1

我在 C++ 方面有不错的背景,但我是 Python 新手。我正在尝试编写一个基本程序,允许用户指定公司的股东人数,然后询问每个股东在三个品质(工作的有用性、工作的重要性、工作的难度)中的每一个的评级。

我想将用户在这三个尺度上的评分存储在某个地方,然后再显示。我仍然不确定是否为 3 种品质中的每一种使用 3 个列表是最有效的方法。无论如何,我在下面的代码中尝试做的是分配一个变量userrem作为标识符,使用该标识符将添加列表中的新项目。

因此,例如,初始值为userrem0。所以,我的理解是usefulness[userrem] = input()应该将输入的值添加为列表中的第一项。然后,正如您在代码中看到的那样,while 循环继续进行并userrem增加 1。所以我认为对于循环的第二次迭代,usefulness[userrem]=input()应该将输入的值添加为列表中的第二项。

但是,在循环的第一次迭代中IndexError: list assignment index out of range输入值后,我不断收到错误消息。usefulness[userrem]

所以,我的问题如下: -

  1. 使用列表甚至是最有效的方法吗?
  2. 实现我想要实现的目标的替代方法是什么?
  3. 为每个股东提供一份清单,每个清单包含三个品质,而不是三个清单,其中包含未知数量的项目(可能是无限的!)?但是,如果我们为每个股东都有一个列表,那么即使每个列表中的项目只有 3 个,列表的数量也可能是未知的并且可能是无限的。我如何确定哪种方法最有效?

谢谢!

def func_input():  
    userrem=0 # Variable used as the identifier while adding items to the lists
    global user_n # Total number of users, accessed during input
    user_n=0 
    user_n=int(input('How many shareholders are there?'))
    while userrem<user_n:
        usefulness[userrem]=int(input('Rate the usefulness of the work performed by shareholder# '+str(userrem+1)+' [Range=0-5]'))
        significance[userrem]=int(input('Rate the significance of the work performed by shareholder# '+str(userrem+1)+' [Range=0-5]'))
        difficulty[userrem]=int(input('Rate the difficulty of the work performed by shareholder# '+str(userrem+1)+' [Range=0-5]'))
        userrem=userrem+1
4

1 回答 1

3

做你想做的最简单的方法是从列表更改为字典:

usefulness = {}
significance = {}
difficulty = {}

它使用与访问列表相同的语法,并允许分配给以前未分配的索引。

如果您希望保留一个列表,则需要先输入另一个变量,然后再输入append列表,或者提前按您需要的大小创建列表。

您可以将 3 个值组合成一个元组或列表,并将其存储在一个列表/字典中,而不是拥有 3 个列表或字典。下面是一些代码来演示在列表中存储元组:

scores = [None]*user_n
for userrem in range(user_n):
    usefulness = int(input('Rate the usefulness of the work performed by shareholder# '+str(userrem+1)+' [Range=0-5]'))
    significance = int(input('Rate the significance of the work performed by shareholder# '+str(userrem+1)+' [Range=0-5]'))
    difficulty = int(input('Rate the difficulty of the work performed by shareholder# '+str(userrem+1)+' [Range=0-5]'))
    scores[userrem] = (usefulness, significance, difficulty)
于 2013-09-13T15:52:15.707 回答