Ищу помощь, только сегодня начал с Python.(3,0)

StackOverflow https://stackoverflow.com/questions/895637

  •  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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top