Python не суммирует (добавляет) числа, просто склеивая их вместе
Итак, я только начал изучать, как кодировать (совершенно новый в этом), и я решил пойти с Python... Поэтому я недавно изучаю, как использовать функции для математики, и я делал свою собственную "кодировку", чтобы увидеть если я могу придумать результат, я хочу, чтобы использовать функции для добавления x + y и дать мне результат, но я продолжаю получать литерал x + y, а не сумму этих двух чисел. например. 1 + 1 = 11 (вместо 2)
Ниже приведен код, может ли кто-нибудь рассказать мне, что я делаю неправильно. Спасибо! ~
(и да, я использую книгу, но она как-то расплывчата в объяснениях [Learn Python the Hard Way])
def add(a, b):
print "adding all items"
return a + b
fruits = raw_input("Please write the number of fruits you have \n> ")
beverages = raw_input("Please write the number of beverages you have \n> ")
all_items = add(fruits, beverages)
print all_items
FYI, код, который мне дал книга, был:
def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
def subtract(a, b):
print "SUBTRACTING %d - %d" % (a, b)
return a - b
def multiply(a, b):
print "MULTIPLYING %d * %d" % (a, b)
return a * b
def divide(a, b):
print "DIVIDING %d / %d" % (a, b)
return a / b
print "Let do some math with just functions!"
age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
# puzzle
print "Here is a puzzle."
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print "that becomes: ", what, "Can you do it by hand?"
В python (и многих других языках) оператор + выполняет двойную задачу. Его можно использовать для получения суммы двух чисел (число + число) или конкатенации строк (строка + строка). Конкатенация здесь означает объединение.
Когда вы используете raw_input
, вы возвращаете пользовательский ввод в виде строки. Таким образом, выполнение fruits + beverages
вызывает последнее значение +
, которое является конкатенацией строк.
Чтобы обрабатывать ввод пользователя как число, просто используйте встроенную функцию int()
:
all_items = add(int(fruits), int(beverages))
int()
здесь преобразует обе строки в целые числа. Затем эти числа передаются на add()
. Имейте в виду, что если вы не выполняете проверку, чтобы убедиться, что пользователь ввел номер, неправильный ввод вызовет ValueError.
Функция raw_input
возвращает строку, а не число. Оператор +
, используемый в строках, объединяет их.
Вам нужно разобрать строки в числах, используя int()
или float()
в результате.
Оператор "+" может быть оператором конкатенации для строк, списков и т.д. и оператора сложения для чисел. Попробуйте добавить int()
wrappers к вашим входам. Также вы можете увидеть тип переменной через type()