How to put punctuation with the last word on the left?

2

It may seem like a silly question, but I did not really find an answer in my readings. I created a program whose purpose is to calculate my Coefficient of Income and the percentage of the course completed in college, whose code follows below:

x = open('carto.txt')
cred = []
nota = []
sit = []
cr = 0
sumcred = 0
totcred = 244 #Total de créditos do curso.
aux = 0
for line in x:
    a = line.split(" ")
    cred += [int(a[0])]
    nota += [float(a[1])]
    sit += [(a[2])]
for i in range(len(nota)):
    sit[i] = sit[i].strip()
    if sit[i] not in {"Isento"}:
        sumcred += (cred[i]) #Calcula o somatório dos créditos cursados até o momento.
for i in range(len(nota)):
    sit[i] = sit[i].strip()
    if sit[i] in {"aprovado", "Isento"}:
        aux += (cred[i]) #Calcula o somatório dos créditos nas matérias onde se obteve aprovação ou isenção.
for i in range(len(cred)):
    sit[i] = sit[i].strip()
    if sit[i] not in {"Isento"}:
        cr += cred[i]*nota[i] #Faz a multiplicação da nota obtida em cada disciplina pela quantidade de créditos (desconsidera isenções).
print("O seu coeficiente de rendimento acumulado (CR) é igual a:",(round((cr/sumcred),2)))
print("O total de créditos do seu curso é de:",totcred,"créditos")
print("O total de créditos cursados até o momento é de:",aux,"créditos")
b = aux/totcred #Calcula o percentual concluído do curso.
print("O percentual concluído até o momento é de:",(round((b*100),2)),"%")
if b == 1:
    print("Parabéns, você concluiu o seu curso!")

The program runs correctly and provides the output that appears in the following image:

Note that in the last line, where O percentual concluído até o momento é de: 53.69 % is written, the percent symbol (%) is separated from the number to its left.

Question: How do I merge % with 53.69 ?

    
asked by anonymous 04.01.2019 / 23:43

3 answers

5

This separation you see with spaces happens because print was made separating each value with comma, that is, invoking print with several values:

print("O percentual concluído até o momento é de:",(round((b*100),2)),"%")
#                                                 ^--                ^--

To control printing exactly the ideal is to interpolate the values in the final string. You can do this using format like this:

print("O percentual concluído até o momento é de:{}%".format(round(b*100,2)))

Notice that the value is placed in the location where you have {} . So you can build the string with as many values as you want and where you want.

You can also use f-string if you are working with python 3.6+:

print(f"O percentual concluído até o momento é de:{round(b*100,2)}%")
    
05.01.2019 / 00:12
2

Change the line:

print("O percentual concluído até o momento é de:",(round((b*100),2)),"%")

To:

print("O percentual concluído até o momento é de:",str(round((b*100),2))+"%")
    
05.01.2019 / 00:15
0

I assigned the variable and did cast .

I tested it like this and it worked.

  
    
      

a="Teste com valor d:"

             

b=round((17.45*4.987),2)

             

c=str(b)

             

d=c + "%"

             

print (a,d)

    
  

Teste com valor d: 87.02%

Maybe it will help you.

    
05.01.2019 / 00:09