Python - Reporte PDF en Phyton

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 20 puestos en Python (en relación al último mes)
Gráfica de Python

Reporte PDF en Phyton

Publicado por Ricardo Garrido (3 intervenciones) el 30/03/2019 22:58:20
Hola, soy bastante novato con lo de la programación y estoy por mis primeros códigos, cree un asistente de cotización en Phyton, y quiero mandar un resumen de los resultados a PDF para enviarlos por correo al cliente, espero me puedan ayudar.
Quiero mandar a pdf el resumen de la cotización, solo esa parte.
Acepto cualquier consejo acerca de como podría mejorar el código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
input("Bienvenido al asistente de cotizacion\nPor favor presione enter\n\n")
def menu ():
    print ("Qué tipo de casa desea comprar?")
    print ("A - Casa A; $80000000, credito con 20% de interes")
    print ("B - Casa B; $75000000, credito con 18% de interes")
    print ("C - Casa C; $70000000, credito con 15% de interes")
while True:
    menu()
    casa = input()
    if casa == "A":
        print (f"Usted a seleccionando la casa A de $80000000")
        precio = 80000000
        credito = 20
        break
    elif casa == "B":
        print (f"Usted a seleccionado la casa B de $75000000")
        precio = 75000000
        credito = 18
        break
    elif casa == "C":
        print (f"Usted a seleccionado la casa C de $70000000")
        precio = 70000000
        credito = 15
        break
    else:
        print ("Usted no ha seleccionado ninguna opcion valida, por favor reintente")
pie = int(input(f"Cuanto dara de pie para comprar la casa {casa}?\n"))
saldo = precio-pie
print(f"Su saldo a solicitar, restando el pie es de; ${saldo}")
creditt = credito*saldo/100
total = creditt+saldo
print ("El resumen de su cotizacion es\n\n\n\n\n\n")
print (f"      INMOBILIARIA \nTipo de casa:    {casa} \nValor:         ${precio}\nPie:           ${pie}\nSaldo:         ${saldo}\nCredito {credito}%:   ${creditt}\nTotal a pagar: ${total}")
input()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Reporte PDF en Phyton

Publicado por tincopasan (1082 intervenciones) el 31/03/2019 20:23:48
hola, hice una pequeñas modificaciones, que están explicadas o son obvias, creo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#-*- coding: utf -8 -*-
import os
 
def puntos(numero):          #función que uso para números más claros de leer
    numero=str(numero)
    final=""
    lugar=1
    for x in numero[::-1]:
        final+= x
        if lugar % 3 == 0 :
            final+= "."
        lugar+=1
 
    final= final[::-1]
    return final
 
def menu ():
    print ("""¿Qué tipo de casa desea comprar?")
    1 - Casa A;  $80.000.000   crédito con 20% de interés
    2 - Casa B;  $75.000.000   credito con 18% de interés
    3 - Casa C;  $70.000.000   credito con 15% de interés""")
    # no entiendo el no usar el signo de interrogación inicial, no es inglés.
    #usaría  números para que el usuario no tenga  dudas y no tener que convertir entre "a" y "A"
    #además el separador "." ayuda a la lectura del monto


print("Bienvenido al asistente de cotización")
os.system("pause ")

while True:
    menu()
    casa = int(input("¿Número?:  "))

    if casa == 1:
        print ("Usted a seleccionando la casa  A de $80.000.000") #¿para qué el modificador "f"?
        precio = 80000000
        credito = 20
        break

    elif casa == 2:
        print ("Usted a seleccionado la casa B de $75.000.000")
        precio = 75000000
        credito = 18
        break

    elif casa == 3:
        print ("Usted a seleccionado la casa C de $70.000.000")
        precio = 70000000
        credito = 15
        break

    else:
        print ("Usted no ha seleccionado ninguna opción válida, por favor reintente")

pie = int(input(f"¿Cuánto dará de pie para comprar la casa {casa}?\n"))
 
while pie > precio:
    print("Se ingreso un pie mayor que el precio")
    pie = int(input(f"¿Cuánto dará de pie para comprar la casa {casa}?\n"))
    #con tantos 0 verifico que no haya un error al ingresar el monto
 
saldo = precio-pie
print(f"Su saldo a solicitar, restando el pie es de:  ${saldo}")
 
creditt = credito*saldo//100
total = creditt+saldo
 
print ("El resumen de su cotizacion es\n\n\n\n\n\n")
resumen=(f"      INMOBILIARIA \nTipo de casa:    {casa} \nValor:         ${puntos(precio)}\nPie:           ${puntos(pie)}\nSaldo:         ${puntos(saldo)}\nCredito {puntos(credito)}%:   ${puntos(creditt)}\nTotal a pagar: ${puntos(total)}")
print(resumen)
os.system("pause")
 
from reportlab.pdfgen import canvas    #librería de reportlab para PDF
from reportlab.lib.pagesizes import A4 # en este caso uso hoja A4
 
w,h = A4
reporte = canvas.Canvas("reporte.pdf",pagesize=A4)
reporte.drawString(50, h - 50, "RESUMEN DE COTIZACIÓN")
 
texto = reporte.beginText(50, h -80)
texto.setFont("Times-Roman", 12)
texto.textLines(resumen)
reporte.drawText(texto)
reporte.save()

espero te sirva.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar