如何在for循环中使用序列变量

时间:2018-12-02 17:13:57

标签: python

        def main():

            for row in range (7):
                assignment = int(1)
                if row == 1:
                    for assignment_number in range(0,8):
                        assignment_number+1

                for i in range(0,7):
                    assignment_mark = float(input(("Please enter your mark for assginment" assignment_number,": "))

                    assignment_weight = float(input("Please enter the total weight percentage for the assignment: "))

            main()

这是我上面的代码,

我基本上是想弄清楚如何为每个输入变量说“请输入x的标记(从1到7)。

这会循环,所以一旦他们输入作业1,就会问相同的问题以进行作业2。

我希望这是有道理的。我是编程新手,而这恰好也是我的第一篇文章!要温柔 (: 谢谢!

2 个答案:

答案 0 :(得分:1)

让循环进行计数,然后使用字符串格式。

您只需要一个循环即可收集每对事件

from collections import namedtuple 

Assignment = namedtuple("Assignment", "mark weight") 

assignments = [] 
for idx in range(7):
    print("Please enter data for assignment {}".format(idx+1)) 
    mark = float(input("mark: "))
    weight = float(input("weight:"))
    assignments.append(Assignment(mark, weight)) 
print(assignments) 

答案 1 :(得分:1)

您的代码存在一些问题:

  • assignment_number+1而不将其分配给变量不会执行任何操作,即使您这样做,该值也会在循环后丢失。如果要将数字偏移一个,则可以只使用range(1, 8)或在实际需要该变量的值时使用+1
  • 在第二个循环中,循环变量为i,但您使用的是前一个循环中的assignment_number,该循环的值仍为上一次执行时的值7
  • 您必须将assignments_markassignment_weight的值存储在某个地方,例如在两个列表中,一个元组列表或一个元组字典;由于分配编号以1而不是0开头,因此我建议使用dict

您可以尝试这样的操作,将作业的分数和权重存储在字典中:

assignments = {}
for i in range(7):
    assignment_mark = float(input("Please enter your mark for assginment %d: " % (i+1)))
    assignment_weight = float(input("Please enter the total weight percentage for the assignment: "))
    assignments[i+1] = (assignment_mark, assignment_weight)

print(assignments)