使用do-while循环的Python出勤率计算器
目标是基于给定的名称列表创建一个百分比attendace计算器。我能够将输入问题与列表中的名称循环。然而,我的问题在于以下if条件,如果列表中的每个人的答案为y,则每个输入问题应输出1,如果列表中的任何人的答案为n,则输出0。然后,应将数字输出相加,以获得一个先例。请帮忙使用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):
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
循环不需要迭代集合。