how to calculate percentage in python

Question:

This is my program

print" Welcome to NLC Boys Hr. Sec. School "
a=input("nEnter the Tamil marks :")
b=input("nEnter the English marks :")
c=input("nEnter the Maths marks :")
d=input("nEnter the Science marks :")
e=input("nEnter the Social science marks :")
tota=a+b+c+d+e
print"Total is: ", tota
per=float(tota)*(100/500)
print "Percentage is: ",per

Result

Welcome to NLC Boys Hr. Sec. School 

Enter the Tamil marks :78

Enter the English marks :98

Enter the Maths marks :56

Enter the Science marks :65

Enter the Social science marks :78 Total is:  375 Percentage is:  0.0

However, the percentage result is 0. How do I calculate the percentage correctly in Python?

Asked By: user3141642

||

Answers:

You’re performing an integer division. Append a .0 to the number literals:

per=float(tota)*(100.0/500.0)

In Python 2.7 the division 100/500==0.

As pointed out by @unwind, the float() call is superfluous since a multiplication/division by a float returns a float:

per= tota*100.0 / 500
Answered By: Paulo Bu

This is because (100/500) is an integer expression yielding 0.

Try

per = 100.0 * tota / 500

there’s no need for the float() call, since using a floating-point literal (100.0) will make the entire expression floating-point anyway.

Answered By: unwind

I guess you’re learning how to Python. The other answers are right. But I am going to answer your main question: “how to calculate percentage in python”

Although it works the way you did it, it doesn´t look very pythonic. Also, what happens if you need to add a new subject? You’ll have to add another variable, use another input, etc. I guess you want the average of all marks, so you will also have to modify the count of the subjects everytime you add a new one! Seems a mess…

I´ll throw a piece of code where the only thing you’ll have to do is to add the name of the new subject in a list. If you try to understand this simple piece of code, your Python coding skills will experiment a little bump.

#!/usr/local/bin/python2.7

marks = {} #a dictionary, it's a list of (key : value) pairs (eg. "Maths" : 34)
subjects = ["Tamil","English","Maths","Science","Social"] # this is a list

#here we populate the dictionary with the marks for every subject
for subject in subjects:
   marks[subject] = input("Enter the " + subject + " marks: ")

#and finally the calculation of the total and the average
total = sum(marks.itervalues())
average = float(total) / len(marks)

print ("The total is " + str(total) + " and the average is " + str(average))

Here you can test the code and experiment with it.

Answered By: JJGuerrero
marks = raw_input('Enter your Obtain marks:')
outof = raw_input('Enter Out of marks:')
marks = int(marks)
outof = int(outof)
per = marks*100/outof
print 'Your Percentage is:'+str(per)

Note : raw_input() function is used to take input from console and its return string formatted value. So we need to convert into integer otherwise it give error of conversion.

Answered By: DigitalGeek

Percent calculation that worked for me:

(new_num - old_num) / old_num * 100.0
Answered By: sridhar

I know I am late, but if you want to know the easiest way, you could do a code like this:

number = 100
right_questions = 1
control = 100
c = control / number
cc = right_questions * c
print float(cc)

You can change up the number score, and right_questions. It will tell you the percent.

Answered By: Mr. Code
def percentage_match(mainvalue,comparevalue):
    if mainvalue >= comparevalue:
        matched_less = mainvalue - comparevalue
        no_percentage_matched = 100 - matched_less*100.0/mainvalue
        no_percentage_matched = str(no_percentage_matched) + ' %'
        return no_percentage_matched 
    else:
        print('please checkout your value')

print percentage_match(100,10)
Ans = 10.0 %
Answered By: Yash Shukla

#Just begining my coding career with Python
#here’s what i wrote its simple

print("nEnter your marks to calculate percentage")
a=float(input("nEnter your English marks"))
b=float(input("nEnter your Mathematics marks"))
c=float(input("nEnter your Science marks"))
d=float(input("nEnter your Computer Science marks"))
e=float(input("nEnter your History marks"))
tot=a+b+c+d+e
print("nTotal marks obtained",tot)
per=float(tot/500)*100
print("Percentage",per)
Answered By: Azam Siddiqui

You can try the below function using part == total marks out of whole == 500.

def percentage(part, whole):
try:
    if part == 0:
        percentage = 0
    else:
        percentage = 100 * float(part) / float(whole)
    return "{:.0f}".format(percentage)
except Exception as e:
    percentage = 100
    return "{:.0f}".format(percentage)
Answered By: Wasim Shaikh
import random

#find percentage of the amount and print the result. Example: 30.0% of 500.0 = ???
def PercentOfAmount(fPercentage, fAmount):
    print(str(fPercentage) + "% of " + str(fAmount) + " = " + str(fPercentage / 100.0 * fAmount))

#nChance represents a % chance from 1-100.
def PercentChance(nChance):
    nRandom = int(random.randrange(1, 101))
    if nChance < 1 or nChance > 100: #Return False if nChance is below 1 or above 100.
         print("nChance returns False below 1 or above 100")
         return False
    if nRandom <= nChance: #if random 1-100 is less than or equal to nChance return True.
         return True
    else:
         return False
Answered By: Chris Williams
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.