2015-03-10 5 views
-4

Я только начинаю изучать Python из книги. Но я продолжать работать с той же проблемой, когда я бегу мой сценарий, он говорит:Средняя функция в Pycharm

File "C:/Users/bob/Desktop/Python/Part3 A.py", line 8, in <module> print(' the average is: ', avg()) 
    File "C:/Users/Bob/Desktop/Python/Part3 A.py", line 6, in avg average = a + b + c/3 
    TypeError: unsupported operand type(s) for /: 'str' and 'int' 

ли я установить «PyCharm» неправильно?

Вот мой код

def avg(): 
a = input('please enter a: ') 
b = input('please enter b: ') 
c = input('please enter c: ') 
average = a + b + c/3 
print(' the average is: ', avg()) 

ответ

4

ли я установить "PyCharm" неправильно? НЕТ

в Python 3 input возвращает строку

a = int(input("please enter a:")) #this will make the input an integer 
# warning if the user enters invalid input it will raise an error 

должен работать нормально

вы также должны изменить свою печать строку

print(' the average is: ', avgerage) 

вы также должны обратить внимание на заказ операций при вычислении среднего значения

average = (a + b + c)/3 

является то, что вы хотите

у вас также есть проблемы отступов, но им вполне уверен Thats потому что вы скопировали и вставили неправильно ... в противном случае вы бы другую ошибку

1

Вы пытаетесь разделить строку на целое число. Вам нужно преобразовать ваши входы в целые числа.

def avg(): 
    a = int(input('please enter a: ')) 
    b = int(input('please enter b: ')) 
    c = int(input('please enter c: ')) 
    average = (a + b + c)/3 
    return average 

print(' the average is: ', avg()) 
+0

Это рекурсивно, посмотрите код. –

+0

Woops. Я просто скопировал и вставил, не заметил этого в OP. Благодарю. – MikeVaughan

0

Вы применяете арифметические операции при вводе строки. Преобразовать его в целое перед использованием

Int (вход ('Пожалуйста, введите:'))

1
def avg(): 
a = intinput('please enter a: ') 
b = input('please enter b: ') 
c = input('please enter c: ') 
average = a + b + c/3 
print(' the average is: ', avg()) 

попробовать это вместо

def avg(): 
a = input('please enter a: ') 
b = input('please enter b: ') 
c = input('please enter c: ') 
average = int(a) + int(b) + int(c)/3 
print(' the average is: ', avg()) 
return; 

PS: Python является отступа чувствительным

+1

это не сработает ...хотя вы частично правы в том, что ему нужно беспокоиться о порядке операций '' 1 "+" 2 "+" 3 "=" 123 "' тот факт, что вы помещаете его в круглые скобки, мало напоминает, что вы не можете разделить строку по int –

+0

теперь вы получаете +1 от меня :) –

+0

Я заметил, что и я отредактировал спасибо за уведомление, что ему также необходимо обработать некоторые ошибки при делении –

1

У вас много ошибок, которые следующие:

def avg(): 
    a = int(input('Please enter a: ')) 
    b = int(input('Please enter b: ')) 
    c = int(input('Please enter c: ')) 
    average = (a + b + c)/3 
    print('The average is:', average) 

avg() # call function outside 
  • Отступ 4 пробела под сферу действия функции.
  • Ввод строки ввода в целые числа со встроенным int.
  • Используйте скобки, иначе математика ошибочна PEMDAS.
  • И наконец, напечатайте среднее значение, не вызывайте функцию рекурсивно.
+0

очень хороший краткий ответ +1 хороший сэр –

+0

Спасибо, я ценю его. –

Смежные вопросы