2017-12-04 4 views
1

Ich erstelle ein einfaches Programm, das die kleinsten Multiplikatoren einer Zahl findet (nicht sicher, ob das der richtige Ausdruck ist). Ich finde jedoch keine Möglichkeit, das letzte "*" aus dem aufgelisteten Ergebnis zu löschen. Was mache ich falsch? Bitte helfen Sie. IchWie lösche ich das letzte Zeichen aus der gedruckten Liste in Python

num = int(input("write number: ")) 
print(num, end = "=") 
div = 2 
while num > 1: 
    if num % div == 0: 
     num = num/div 
     print(div, end = "*") 
    else: 
     div += 1 

Ergebnis bekam:

24=2*2*2*3* 

Ergebnis Ich möchte:

24=2*2*2*3 

Ich habe versucht, sep = ""anstelle von Ende zu verwenden ="", versuchte \ b, [: -1] Aber das funktioniert nicht oder ich mache es nur falsch. Danke.

Antwort

0

Eine Option einfach, ob oder nicht num = 1 vor dem Druck der "*"

num = num/div 
if num == 1 : 
    print(div) 
else : 
    print(div, end = "*") 

zu überprüfen ist, Da Sie nur eine * drucken möchten, wenn Es gibt mehr Multiplikatoren und es wird immer einen anderen Multiplikator geben, wenn div mehr als 1 ist.

4

Sie können eine Liste von Divisoren erstellen und dann die verkettete Liste drucken.

num = int(input("write number: ")) 
print(num, end = "=") 
div = 2 
out = [] 
while num > 1: 
    if num % div == 0: 
     num = num/div 
     out.append(div) 
    else: 
     div += 1 
print('*'.join(map(str,out))) 

Test:

write number: 24 
24=2*2*2*3 
0

Sie können verketten aß Ihre Ergebnisse:

s += div + "*" 

Und nach nicht nur letztem Symbol drucken:

print(s[:-1]) 

Aber in meinem Kopf ist es eine schlechte Entscheidung, denn in String Python-Typ ist unveränderlich Typ -> und wegen es wird jedes Mal "s + = div +" * "" neue Variable "s" erstellt.

-1
import sys 
sys.stdout.write('\b \b') ##at the end of the program 

Ergebnis:

write number: 24 
24=2*2*2*3 
Verwandte Themen