使用do-while循环的Python出勤率计算器

使用do-while循环的Python出勤率计算器,python,if-statement,while-loop,Python,If Statement,While Loop,目标是基于给定的名称列表创建一个百分比attendace计算器。我能够将输入问题与列表中的名称循环。然而,我的问题在于以下if条件,如果列表中的每个人的答案为y,则每个输入问题应输出1,如果列表中的任何人的答案为n,则输出0。然后,应将数字输出相加,以获得一个先例。请帮忙 continueLooping=True students=["Annie", "Brian", "Clare", "Danny", "Ellen"] i=0 while i<len(students):

目标是基于给定的名称列表创建一个百分比attendace计算器。我能够将输入问题与列表中的名称循环。然而,我的问题在于以下if条件,如果列表中的每个人的答案为y,则每个输入问题应输出1,如果列表中的任何人的答案为n,则输出0。然后,应将数字输出相加,以获得一个先例。请帮忙

continueLooping=True

students=["Annie", "Brian", "Clare", "Danny", "Ellen"]

i=0

while i<len(students):
    askuser=input(f"Is {students[i]} present?[y/n]")
    i=i+1

    if askuser == "y":
        one = 1
        print("1")

    else:
        one = -1
        print("-1")

        while one<len(students):
            if askuser == "y":
               one = 1
                one=one+1
            else:
                one = -1
                one=one+1

percentage=(one)/len(students)
print(percentage)
continueloping=True
学生=[“安妮”、“布莱恩”、“克莱尔”、“丹尼”、“艾伦”]
i=0

而i只有当第一个答案为“y”时,第二个内部while循环才会终止

你应该做的是计算你在外部while循环中收到的“y”答案的数量。 因此:

students=["Annie", "Brian", "Clare", "Danny", "Ellen"]

i=0
studentsPresentCount = 0

while i<len(students):
    askuser=input(f"Is {students[i]} present?[y/n]")
    i=i+1

    if askuser == "y":
        studentsPresentCount += 1




percentage = studentsPresentCount/len(students)
print(percentage)
学生=[“安妮”、“布莱恩”、“克莱尔”、“丹尼”、“艾伦”]
i=0
studentsPresentCount=0

当我试图尽可能地接近您的代码时,下面的代码适用于您所描述的内容

该代码有三个主要更正:

  • 您有一个不必要的内部while循环。在每次通过外部while循环时,您可以询问每个学生的情况,输出所需的出勤率,并调整出勤分数。里面不需要第二个回路

  • 您不断更改“一”的值,而不是递增或递减。您可以在循环外部将1设置为0(就像您对计数器i所做的那样),并在循环内部对其进行调整

  • 您可能不希望未出席人数为-1,而是希望将其设为零。设想一个有3名与会者和2名非与会者的场景。你的分数将以1+1+1-1-1结束,出勤分数为1,而事实上出勤分数为3

  • 一开始也不需要“continueLooping”变量

    最后一点,如果需要百分比,可以将百分比值乘以100(按原样,它返回十进制值)

    经这些更正后的工作代码为:

    students=["Annie", "Brian", "Clare", "Danny", "Ellen"]
    
    i=0
    one = 0
    
    while i<len(students):
        askuser=input(f"Is {students[i]} present?[y/n]")
        i=i+1
    
        if askuser == "y":
            one += 1
            print("1")
    
        else:
            print("0")
    
    
    
    percentage=(one)/len(students)
    print(percentage)
    
    学生=[“安妮”、“布莱恩”、“克莱尔”、“丹尼”、“艾伦”]
    i=0
    一=0
    
    首先,对于这个问题,应该使用
    for
    循环。
    while
    循环不需要迭代集合。