Ищу помощь, только сегодня начал с Python.(3,0)
-
23-08-2019 - |
Вопрос
Я просто пытаюсь разобраться в Python, но мне очень сложно найти какой-либо ресурс Python 3.Все, что у меня есть на данный момент, это сайт divintopython3.org, и его возможности ограничены.В любом случае, я просто пытался почувствовать язык, выполняя некоторые очень простые вещи, но я не могу понять, почему эта маленькая программа не делает то, что я хочу, а именно складывает 2 числа.Я уверен, что кто-то здесь знает, как это исправить, но любые другие ресурсы, содержащие учебные пособия по Python 3, будут очень признательны:
def add(num=0,num2=0):
sumEm = (num+num2)
print (sumEm)
if __name__ == '__main__':
num = input("Enter a number: ")
num2 = input("Enter a number: ")
add(num,num2)
выход:
Enter a number: 23
Enter a number: 24
23
24
Решение
Байт Python подробно описывает Python 3.Существует также версия книги 2.X, которая поможет сравнить и сопоставить различия между языками.
Чтобы решить вашу проблему, вам необходимо преобразовать введенные данные в целое число.По умолчанию он сохраняется в виде строки.
num = int(input("Enter a number: "))
num2 = int(input("Enter a number: "))
Другие советы
Ты не сказал того, что ты делать получить - я думаю num
и num2
объединены, так как input
возвращает строку.Добавление двух строк просто объединяет их.Если вы ожидаете num
и num2
для представления целых чисел вы можете использовать int
для преобразования строк в целые числа:
num = int(input("Enter a number:")
num2 = int(input("Enter a number:")
И вы, вероятно, получите лучшие результаты.Обратите внимание, что еще есть возможности для улучшения проверки ошибок, но это может помочь вам начать.
Еще одна вещь, которую стоит попробовать — добавьте строку в конец вашего __main__
так:
add(4, 3)
и посмотреть, что будет напечатано.Это скажет вам, связана ли неисправность с add
или с вашими процедурами ввода.
Конечно, ничто из этого не дало вам ресурсов - разве онлайн-документы не помогают?Я бы начал с руководство, если вы еще этого не сделали.
Интересно, 3 ответа, и ни один из них не решает вашу проблему правильно.
Все, что вам нужно сделать, это:
def add(num=0,num2=0):
sumEm = (int(num)+int(num2)) # may need the int() because in python 3.0 the manual says it only returns strings
return sumEm # use return here not print
Марка Саммерфилда написала книга Аддисона-Уэсли под названием «Программирование на Python 3», и я считаю ее лучшей книгой по Python, которую я читал.Я полагаю, что для вас есть одна приятная вещь: Саммерфилд не упоминает о различиях между версиями 2.X и 3.x, поэтому тот, кто просто изучает Python, получает непрерывное представление о (новом и улучшенном) Python.Добавьте к этому, что он объясняет вещи, которые другие книги (в моем случае из 1.X) либо никогда не затрагивали, либо (я думаю) искажали.Параграфы о пользовательских исключениях только что вывели меня из затруднительного положения, а его отношение к * и ** как к операторам распаковки прояснило для меня значительный умственный туман.Книга на высшем уровне.
Кстати, есть модуль sys, который делает полезные вещи, например позволяет получить доступ к аргументам командной строки.Эти аргументы представляют собой (под)строки, и на днях мне пришлось использовать int(), как говорит комментатор dkbits, чтобы их использовать.(Функция type() сообщает вам, какой тип Python считает переменной.) У меня было:
import sys
#Parse the command line.
if len(sys.argv) != 4:
print "Usage: commandName maxValueInCell targetSum nCellsInGroup"
exit()
else:
maxv = int( sys.argv[1])
tgt = int( sys.argv[2])
nc = int( sys.argv[3])
print "maxv =",maxv, "; tgt = ",tgt, "; nc = ",nc
print type(sys.argv[1]) #strings
print type(sys.argv[2])
print type(sys.argv[3])
print type(maxv) #ints
print type(tgt)
print type(nc)