Нужна помощь, только что начал с Python сегодня. (3.0) - PullRequest
1 голос
/ 22 мая 2009

Я просто пытаюсь войти в python, но мне было очень трудно найти какой-либо ресурс, который является Python 3. Все, что у меня есть, это diveintopython3.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

Ответы [ 4 ]

7 голосов
/ 22 мая 2009

Байт Python подробно описывает Python 3. Есть также версия книги 2.X, которая может помочь сравнить и сопоставить различия в языках.

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

num = int(input("Enter a number: "))
num2 = int(input("Enter a number: "))
3 голосов
/ 22 мая 2009

Вы не сказали, что вы делаете получаете - я предполагаю, что num и num2 объединены, поскольку input возвращает строку. Добавление двух строк просто объединяет их. Если вы ожидаете, что num и num2 будут представлять целые числа, вы можете использовать int для преобразования строк в целые числа:

num = int(input("Enter a number:")
num2 = int(input("Enter a number:")

И вы, вероятно, получите лучшие результаты. Обратите внимание, что еще есть место для лучшей проверки ошибок, но это может помочь вам начать.

Еще одна вещь, которую нужно попробовать - добавить строку в конце вашего __main__, например:

add(4, 3)

и посмотри, что будет напечатано. Это скажет вам, является ли ошибка с add или с вашими входными процедурами.

Конечно, ничего из этого не предоставило вам ресурс - онлайн-документы не помогают? Я бы начал с учебника , если вы еще этого не сделали.

1 голос
/ 22 мая 2009

Интересно, 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
0 голосов
/ 22 мая 2009

Есть книга Аддисона-Уэсли Марка Саммерфилда под названием «Программирование на Python 3», и я считаю, что это лучшая книга по Python, которую я читал. Я хотел бы представить вам одну приятную вещь: Summerfield не вызывает различий между 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...