Ver Mensaje Individual
  #17 (permalink)  
Antiguo 04/11/2010, 17:22
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: "leer entero" muy importante

No es tan complejo, solamente hay que entender lo que hace. Casi todos los lenguajes tienen una función similar (normalmente llamada printf), y se usa para indicar una cadena (que se llama "de formato") que funciona como una especie de plantilla. La cadena dice dónde y cómo se muestra el contenido de una o más variables:

Código Python:
Ver original
  1. amigo = "Alvaro"
  2. edad = 24
  3. print "Soy %s, tengo %d años" % (amigo, edad)
es equivalente a
Código Python:
Ver original
  1. print "Soy " + amigo + ", tengo " + edad + " años"
o
Código Python:
Ver original
  1. print "Soy", amigo, ", tengo", edad, "años"

la tupla que viene luego del % tiene las variables a "insertar" en la cadena que se imprimirá. %s indica que se debe escribir texto, %d es para escribir un entero.
Hay otros formatos más complejos (%.3f muestra un flotante con 3 dígitos luego del punto decimal) pero los básicos son %s y %d, y así es como funciona el asunto.

En el ejemplo que te pasó razpeitia, el + que sigue a % es para que muestre el signo.

Los espacios agregados vienen de separar los argumentos de print con una coma, para evitarlos se usa el formato que te acabo de describir, o la concatenación (unir trozos con +). Usar una cadena de formato es más eficiente que concatenar (aunque por supuesto no lo notarás con solo un par de cadenas), y te animo a investigar o pensar el por qué.
Concatenar tiene la desventaja adicional de que no podés mezclar enteros y cadenas (tipos int y string), por lo que hay que convertir los enteros a string primero.

Contestando la pregunta, fijate en la forma en la que la planteás:
Cita:
se quiten los espacios y cuando b<0 no aparezca ese + delante
o sea, algo así es lo que querés:
if b < 0:
no_imprimir_+

o sea, hacer algo cuando b > 0, y no hacerlo cuando b < 0. ahora ¿qué es ese algo? Por cómo estás usando print, ahora mismo no ves la solución, pero ¿qué pasa si en vez de separar los argumentos de print con una coma, los unís con +:
Código Python:
Ver original
  1. print str(a) + "+" + str(b) + "i"
(str(a) es necesario porque a es un entero y no se puede concatenar con una cadena, diferencias de tipos)
Ahora está bien claro el punto en el que se está imprimiendo ese +. ¿Qué pasa si lo cambiamos a una variable?
Código Python:
Ver original
  1. mas = ""
  2. print str(a) + mas + str(b) + "i"
ahora solamente falta asignar el valor a la variable mas únicamente cuando b > 0