2017-12-04 1 views
1

숫자의 최소 곱셈기를 찾습니다 (올바른 용어인지 확실하지 않음). 그러나 나열된 결과에서 마지막 "*"을 삭제하는 방법을 찾을 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 도와주세요.파이썬에서 인쇄 된 목록에서 마지막 문자를 제거/삭제하는 방법

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 

결과는 내가 가지고 :

24=2*2*2*3* 

결과 내가 원하는 :

24=2*2*2*3 

내가 = ""대신 끝 = "는"시도 \ B를 구월를 사용하려고, [: -1]하지만 이것은 작동하지 않거나 단지 잘못하고 있습니다. 감사합니다.

답변

0

하나의 옵션은 인쇄하기 전에 여부 NUM = 1을 확인하는 것입니다은 "*"

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

당신은 단지 *의 경우를 인쇄 할 때문에 div가 1보다 크면 다른 곱셈기가 더있을 것입니다.

4

약수 목록을 만든 다음 연결된 목록을 인쇄 할 수 있습니다.

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))) 

테스트 :

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

연결할 수 있습니다

s += div + "*" 

그리고 단지 마지막 심볼을 인쇄하지 않습니다 후 : 결과 먹었

print(s[:-1]) 

하지만 내 마음에 때문에 파이썬 문자열 형식에 나쁜 결정의

는 불변 유형입니다 -> 때문에의 그것은 매번 "s + = div +"* ""새로운 변수 "s"가 생성 될 것입니다.

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

결과 :

write number: 24 
24=2*2*2*3 
관련 문제