#python #percentage #division
#python #процент #разделение
Вопрос:
Я создаю программу на Python для определения процента моих оценок по различным предметам. Предполагается, что он запрашивает у меня мои оценки и находит процент, но что-то не так. Я довольно молод, поэтому, пожалуйста, не смейтесь над моей попыткой:
import os
import time
print ("This is a program to calculate your percentage in your ACADEMICS ")
time.sleep(2)
english = input("Enter your english marks n t")
time.sleep(1)
maths = input ("Enter your maths marks n t")
time.sleep(1)
science= input ("Enter your science marks n t")
time.sleep(1)
print ("OK, i am reviewing your marks, ")
time.sleep(1)
print ("Hmm, verry poor marks, but here is your %")
percentage = english maths science /3
print(percentage)
но в конце говорится, что
Traceback (most recent call last):
File "C:/Users/COOL BOY/Desktop/percentage.py", line 18, in <module>
percentage = english maths science %3
TypeError: not all arguments converted during string formatting
Что я здесь делаю не так?
Комментарии:
1. Ваша ошибка не соответствует вашему коду, и вы не преобразуете свои входные данные в целые числа.
2. 1. Отображается сообщение об ошибке
%
, но отображается ваш код/
. Таким образом, эта ошибка не соответствует фактическому коду. 2. Познакомься со своим новым другом БОДМАСОМ !3. процент = (английский математика наука)/3
Ответ №1:
input
Функция возвращает строку. При вычислении english maths science /3
вы добавляете строки! Вы должны преобразовать свои входные данные в числа с помощью функций int(string)
or float(string)
. Вы также можете проверить, состоят ли ваши строки из цифр с 'mystring'.isdigit()
помощью .
Ответ №2:
Преобразуйте строку в int при запросе входных данных, при вычислении вы используете строки вместо целых чисел.
import os
import time
print ("This is a program to calculate your percentage in your ACADEMICS ")
time.sleep(2)
english = int(input("Enter your english marks n t"))
time.sleep(1)
maths = int(input("Enter your maths marks n t"))
time.sleep(1)
science= int(input("Enter your science marks n t"))
time.sleep(1)
print ("OK, i am reviewing your marks, ")
time.sleep(1)
print ("Hmm, verry poor marks, but here is your %")
percentage = (english maths science) /3
print(percentage)
Ответ №3:
- Ввод должен быть приведен с помощью int Ex:
int(input("number"))
- Учитывая, что maxScore для предмета равен 100, формула будет
percentage=(aquaired marks of all 3 subjects)x100/(3*100)
- Процент должен быть округлен на последние 2 цифры.
Окончательная программа будет.
import os
import time
maxscore = 100
totalsubjects=3
print ("This is a program to calculate your percentage in your ACADEMICS ")
time.sleep(2)
english = int(input("Enter your english marks n t"))
time.sleep(1)
maths = int(input("Enter your maths marks n t"))
time.sleep(1)
science= int(input("Enter your science marks n t"))
time.sleep(1)
print ("OK, i am reviewing your marks, ")
time.sleep(1)
print ("Hmm, verry poor marks, but here is your %")
percentage = (english maths science)*100/(maxscore*totalsubjects)
print(round(percentage,2))
Ответ №4:
способ pythonic
import os, time
def get_subject_score(sub):
time.sleep(2)
return int(input(f"Enter your {sub} marks : ")) # int or float as you wish
print("This is a program to calculate your percentage in your ACADEMICS")
english = get_subject_score("english")
maths = get_subject_score("math")
science = get_subject_score("science")
print(f"OK, i am reviewing your marks, {(english maths science) / 3}")
Ответ №5:
- Когда вы принимаете integrer в качестве входных данных, это должно быть
int(input())
вместоinput()
того, чтобы позже принимать входные данные в виде строки - Для вычисления процента его должно быть в процентах = (Сумма полученных отметок) Максимальные отметки / (3 максимальных отметки)
Предполагая, что 100 в качестве знаков * Процент = (английский математика наука) 100 / (3 * 100)