Respostas:
No Python2, print
havia uma palavra-chave que introduzia uma declaração:
print "Hi"
No Python3, print
é uma função que pode ser chamada:
print ("Hi")
Nas duas versões, %
é um operador que requer uma sequência no lado esquerdo e um valor ou uma tupla de valores ou um objeto de mapeamento (como dict
) no lado direito.
Portanto, sua linha deve ficar assim:
print("a=%d,b=%d" % (f(x,n),g(x,n)))
Além disso, a recomendação para Python3 e mais recente é usar a {}
formatação -style em vez de%
formatação -style:
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
O Python 3.6 introduz ainda outro paradigma de formatação de strings : f-strings .
print(f'a={f(x,n):d}, b={g(x,n):d}')
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
onde este exemplo mostra como você pode usar os modificadores de estilo printf e ainda usar palavras-chave.
A maneira mais recomendada de fazer é usar o format
método Leia mais sobre isso aqui
a, b = 1, 2
print("a={0},b={1}".format(a, b))
Função printf () simples do Python Cookbook de O'Reilly .
import sys
def printf(format, *args):
sys.stdout.write(format % args)
Exemplo de saída:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
PRINT
e FORMAT
...? Voltar no tempo 60 + anos para os dias de Fortran :)
O Python 3.6 introduziu f-strings para interpolação em linha. O que é ainda melhor é que ela estendeu a sintaxe para permitir também especificadores de formato com interpolação. Algo em que eu estava trabalhando enquanto pesquisava isso no Google (e me deparei com essa pergunta antiga!):
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
O PEP 498 tem os detalhes. E ... classificou minha irritação com especificadores de formato em outros idiomas - permite especificadores que podem ser expressões! Yay! Consulte: Especificadores de formato .
Exemplo simples:
print("foo %d, bar %d" % (1,2))
Um mais simples.
def printf(format, *values):
print(format % values )
Então:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
Como você %
está fora dos print(...)
parênteses, você está tentando inserir suas variáveis no resultado da sua print
chamada. print(...)
retorna None
, para que isso não funcione, e também há a pequena questão de você já ter impresso seu modelo nessa viagem no tempo e no tempo sendo proibida pelas leis do universo em que habitamos.
A coisa toda que você deseja imprimir, incluindo o %
operando e, precisa estar dentro da sua print(...)
chamada, para que a cadeia possa ser criada antes de ser impressa.
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
Adicionei alguns espaços extras para torná-lo mais claro (embora eles não sejam necessários e geralmente não sejam considerados bons estilos).
Outras palavras printf ausente em python ... Estou surpreso! O melhor código é
def printf(format, *args):
sys.stdout.write(format % args)
Por causa deste formulário, permite não imprimir \ n. Todos os outros não. É por isso que a impressão é ruim de operação. E você também precisa escrever args de forma especial. Não há desvantagens na função acima. É uma forma usual padrão da função printf.
print("Name={}, balance={}".format(var-name, var-balance))
%
sempre foi um operador de cadeia, não relacionado àprint
instrução Você pode, por exemplo, criar uma sequência coms="a=%d,b=%d"%(f(x,n),g(x,n))
, e imprimi-la comprint s
.