fixed certain functions, simplified the code and added descrption for certain lines of code. [perfect code]
This commit is contained in:
parent
9e047e1c49
commit
6cbcb483c7
125
assignment-2.py
125
assignment-2.py
@ -1,92 +1,85 @@
|
|||||||
# DSL - Assignment 2
|
# List for storing marks
|
||||||
|
|
||||||
students=[]
|
|
||||||
marks = []
|
marks = []
|
||||||
total_students_in=int(input("Total number of students are: \t"))
|
total = int(input("Total number of students are:\t"))
|
||||||
|
|
||||||
# Entering marks
|
# Input marks
|
||||||
def total_students_fn():
|
def marksInput():
|
||||||
for i in range(total_students_in):
|
print("\n----------\nNOTE: PLEASE ENTER MARKS OUT OF 50. ENTER '-1' FOR ABSENT STUDENTS.\n----------\n")
|
||||||
marks_in=int(input("Enter marks for DSA subject for each student (out of 50) (enter -1 for absent students): \t"))
|
for i in range(total):
|
||||||
marks.append(marks_in)
|
enterMarks = int(input(f"Enter marks for student {i+1}:\t"))
|
||||||
print("Marks of", total_students_in, "students in DSA subject are:", marks)
|
marks.append(enterMarks)
|
||||||
|
print(f"\n-----\nMarks of {total} students are:\t{marks}\n-----")
|
||||||
|
|
||||||
total_students_fn()
|
# Option 1 = Average score
|
||||||
|
|
||||||
# Option 1 = Average
|
|
||||||
def average_marks():
|
def average_marks():
|
||||||
|
marks_withoutAbsent = []
|
||||||
for i in marks:
|
for i in marks:
|
||||||
if i<0:
|
if (i >= 0):
|
||||||
break
|
marks_withoutAbsent.append(i)
|
||||||
else:
|
else:
|
||||||
average_calc=sum(marks)/total_students_in
|
break
|
||||||
print("Average score of", total_students_in, "is: \t", average_calc)
|
average_calc = sum(marks_withoutAbsent) / total
|
||||||
|
print(f"\n------\nAverage score of {total} students is:\t{average_calc}\n-----")
|
||||||
|
|
||||||
# Option 2 = Highest and lowest
|
# Option 2 = High and low marks
|
||||||
def high_low():
|
def high_low():
|
||||||
mini=marks[0]
|
maxi = marks[0] # Initialize maxi with the first element of the marks list
|
||||||
maxi=marks[0]
|
mini = marks[0] # Initialize mini with the first element of the marks list
|
||||||
for i in range(len(marks)):
|
for i in range(len(marks)):
|
||||||
if (maxi < marks[i] and marks[i] > -1):
|
if (maxi < marks[i] and marks[i] > -1):
|
||||||
maxi = marks[i]
|
maxi = marks[i]
|
||||||
for j in range(len(marks)):
|
for j in range(len(marks)):
|
||||||
if (mini > marks[j] and marks[j] > -1):
|
if (mini > marks[j] and marks[j] > -1):
|
||||||
mini = marks[j]
|
mini = marks[j]
|
||||||
print("Highest marks are: \t", maxi)
|
print(f"\n-----\nHighest score is:\t{maxi}\nLowest score is:\t{mini}\n-----")
|
||||||
print("Lowest marks are: \t", mini)
|
|
||||||
|
|
||||||
# Option 3 = Absent
|
# Option 3 = Absent count
|
||||||
def absent():
|
def absent():
|
||||||
absent_count=0
|
absent_count = 0;
|
||||||
for i in marks:
|
for i in marks:
|
||||||
if i==-1:
|
if (i < 0):
|
||||||
absent_count+=1
|
absent_count+=1
|
||||||
print("Total number of absent students out of", total_students_in, "are: \t", absent_count)
|
|
||||||
|
|
||||||
# Option 4 = Highest freq
|
|
||||||
def high_freq():
|
|
||||||
freq_count=0
|
|
||||||
for i in range(len(marks)):
|
|
||||||
if (i>=0):
|
|
||||||
count=0
|
|
||||||
for j in range(len(marks)):
|
|
||||||
if (marks[i]==marks[j]):
|
|
||||||
count+=1
|
|
||||||
if (freq_count<count):
|
|
||||||
freq_count=count
|
|
||||||
else:
|
else:
|
||||||
break
|
continue
|
||||||
print("Highest frequency is: \t", freq_count)
|
print(f"\n-----\nTotal absent students are:\t{absent_count}\n-----")
|
||||||
|
|
||||||
# Choosing an option
|
# Option 4 = Highest frequency
|
||||||
def choose_optn():
|
def high_freq():
|
||||||
while True:
|
freq_count = 0 # Initialise frequency counter
|
||||||
print("Choose an operation to perform:")
|
for i in range(len(marks)): # Iterate through marks list using i
|
||||||
print("1. Average score of all students")
|
if (marks[i] >= 0): # Only consider non-negative marks (since -1 is absent)
|
||||||
print("2. Highest and lowest score out of all students")
|
temp_count = 0 # Initialise temporary counter
|
||||||
print("3. Count of students absent for test")
|
for j in range(len(marks)): # Iterate through marks list using j again
|
||||||
print("4. Display marks with highest frequency")
|
if (marks[i] == marks[j]):
|
||||||
print("5. Exit")
|
temp_count+=1
|
||||||
optn=int(input("Enter option number (1-5): \t"))
|
if (freq_count < temp_count): # If temp_count is greater than freq_count value, then
|
||||||
if optn==1:
|
freq_count = temp_count # Make freq_count equal to temp_count
|
||||||
|
print(f"\n-----\nHighest frequency is:\t{freq_count}\n-----")
|
||||||
|
|
||||||
|
def main():
|
||||||
|
marksInput()
|
||||||
|
|
||||||
|
while (1):
|
||||||
|
print("\n----- MAIN MENU -----")
|
||||||
|
print("1 -> Average score of class")
|
||||||
|
print("2 -> Highest and lowest score of class")
|
||||||
|
print("3 -> Total absent students")
|
||||||
|
print("4 -> Marks with highest frequency")
|
||||||
|
print("5 -> Exit")
|
||||||
|
|
||||||
|
optn = int(input("Choose an option (1-5):\t"))
|
||||||
|
|
||||||
|
if (optn == 1):
|
||||||
average_marks()
|
average_marks()
|
||||||
print("Designed and Engineered by Kshitij")
|
elif (optn == 2):
|
||||||
elif optn==2:
|
|
||||||
high_low()
|
high_low()
|
||||||
print("Designed and Engineered by Kshitij")
|
elif (optn == 3):
|
||||||
elif optn==3:
|
|
||||||
absent()
|
absent()
|
||||||
print("Designed and Engineered by Kshitij")
|
elif (optn == 4):
|
||||||
elif optn==4:
|
|
||||||
high_freq()
|
high_freq()
|
||||||
print("Designed and Engineered by Kshitij")
|
elif (optn == 5):
|
||||||
elif optn==5:
|
print("\n\n## END OF CODE\n\n")
|
||||||
print("## Designed and Engineered by Kshitij\n## END OF CODE.")
|
|
||||||
quit()
|
quit()
|
||||||
else:
|
else:
|
||||||
print("\n Invalid option selected. Please choose from range 1 to 5. \n")
|
print("\n\nPlease choose a valid option (1-5)\n\n")
|
||||||
choose_optn()
|
main()
|
||||||
|
|
||||||
choose_optn()
|
|
||||||
|
|
||||||
## END OF CODE
|
|
||||||
|
Loading…
Reference in New Issue
Block a user