Pergunta

Estou apenas tentando entrar em python, mas eu achei muito difícil encontrar qualquer recurso que é Python 3. Tudo o que eu tenho até agora é diveintopython3.org, e sua limitada. De qualquer forma, eu estava apenas tentando começar uma sensação para a linguagem, fazendo algumas coisas muito básicas, mas eu não consigo descobrir por que este programa pouco não vai fazer o que eu pretendo, que é adicionar 2 números. Tenho certeza que alguém aqui sabe como consertá-lo, mas quaisquer outros recursos que contêm tutoriais em Python 3 seria muito apreciada:

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)

saída:

Enter a number: 23
Enter a number: 24
23
24
Foi útil?

Solução

um byte de Python tampas Python 3 em detalhe. Há também uma versão 2.x do livro, que pode ajudar a comparar e contrastar as diferenças entre os idiomas.

Para corrigir o problema, você precisa converter a entrada levados em um inteiro. Ele é armazenado como uma string por padrão.

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

Outras dicas

Você não disse que você do get - Eu estou supondo num e num2 concatenadas, como o input retorna um string. Adicionando duas cordas simplesmente concatena-los. Se você espera num e num2 para representar números inteiros, você poderia usar int para converter as strings em inteiros:

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

E é provável que você obter melhores resultados. Nota ainda há espaço para uma melhor verificação de erros, mas isso pode começar.

Uma outra coisa para tentar - adicionar uma linha no final do seu __main__ assim:

add(4, 3)

e ver o que será impresso. Isso vai dizer se a culpa é com add ou com seus rotinas de entrada.

É claro, nada disso desde que com um recurso - são os docs online não ajudar? Eu começaria com a tutorial , se você não tiver já.

Interessante, 3 respostas, e nenhum deles resolver o problema corretamente.

Tudo que você tem a fazer é esta:

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

Há um livro de Addison-Wesley por Mark Summerfield chamado de "programação em Python 3", e eu encontrei-o para ser o melhor Python livro que eu li. Uma coisa agradável para você, eu imagino, é que Summerfield não trazer diferenças entre 2.xe 3.x, então alguém apenas pegar Python recebe uma visão ininterrupta (novo e melhorado) Python. Adicione a isso que ele explica as coisas que os outros livros --- no meu caso de 1.X --- ou nunca tocaram ou (eu acho) misstated. Os parágrafos sobre exceções personalizadas apenas me tirou de uma enrascada, e seu tratamento de * e ** como operadores desembalar esclarecido confusão mental considerável para mim. livro de alto nível.

BTW, há um módulo chamado sys que faz coisas úteis, como permitem acessar os argumentos de linha de comando. Esses argumentos são (sub) cordas, e no outro dia eu tive que usar int (), como dkbits comentarista diz que, para colocá-los de usar. (. A função type () diz-lhe que tipo Python considera uma variável a ser) eu tinha:

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top