반응형
문제
사용자에게 두 개의 정수를 입력받아 곱셈과정을 단계별로 출력하는 프로그램을 작성하라.(곱셈 단계별 숫자의 위치를 정확히 맞추어 출력)
예시)
🐍파이썬 코드
더보기
❌실패한 코드
print('1. 1번째 n자리 정수 출력')
a = int(input('n자리 정수를 입력하세요: '))
print('2. 2번째 n자리 정수 출력')
b = int(input('n자리 정수를 입력하세요: '))
print('3. 곱셈 결과 출력')
#두 수의 곱셈 결과를 담은 리스트
resultList = list(str(abs(a * b)))
#두 수의 곱셈 결과를 담은 리스트
aLength = len(str(abs(a)))
bLength = len(str(abs(b)))
bList = list(str(abs(b)))
if aLength >= bLength:
max = aLength
else:
max = bLength
#총 공백 - a 자리수: a 공백갯수
aEmpt = len(resultList) + 1 - aLength
#총 공백 - b 자리수: b 공백갯수 (X 자리 포함)
bEmpt = len(resultList) + 1 - bLength - 1
#두 수를 식으로 구현
if a < 0:
print(' ' * (aEmpt - 2), end = '')
else:
print(' ' * aEmpt, end = '')
print(str(a))
if b < 0:
print('X'+' ' * (bEmpt - 2), end = '')
else:
print('X'+' ' * bEmpt, end = '')
print(str(b))
print('-' * ((len(resultList) + 1))) #총 공백+1(X 자리)만큼 -생성
#계산과정(B의 길이만큼 반복)
j = 0
for i in range(bLength - 1, -1, -1): #bLength-1부터 0까지 반복
#a, b 둘 중 큰 값보다 자릿수가 클 때
if len(str(abs(a) * (int)(bList[i]))) > max:
print(' ' * (aEmpt - j), end = '') #앞공백
if a * (int)(bList[i]) < 0:
print(abs(a) * (int)(bList[i]), end = '') #계산식. b 리스트 맨 뒤에서부터 차례로 a와 곱함
else:
print(a * (int)(bList[i]), end = '')
print(' ' * j) #뒷공백
#a, b 둘 중 큰 값보다 자릿수가 작거나 같을 때
else:
print(' ' * (aEmpt - j - 1), end = '') #앞공백 줄이기
if a * (int)(bList[i]) < 0:
print(abs(a) * (int)(bList[i]), end = '') #계산식. b 리스트 맨 뒤에서부터 차례로 a와 곱함
else:
print(a * (int)(bList[i]), end = '')
print(' ' * j) #뒷공백 유지
j += 1
print('-' * ((len(resultList) + 1)))
if a * b < 0:
print(str(a * b))
else:
print(' ' + str(a * b))
print('1. 1번째 n자리 정수 출력')
a = int(input('n자리 정수를 입력하세요: '))
print('2. 2번째 n자리 정수 출력')
b = int(input('n자리 정수를 입력하세요: '))
print('3. 곱셈 결과 출력')
Result = list(str(a*b))
print(' ' * (len(Result)-len(str(a))+1), end = '')
print(a)
print('X' + ' ' * (len(Result)-len(str(b))), end = '')
print(b)
print('-' * (len(Result)+2))
bList = list(str(abs(b)))
j = 0
for i in range(len(bList)-1, -1, -1):
step = a * int(bList[i])
if a < 0 or b < 0:
print(' ', end = '')
if a > 0 and b > 0:
print(' ', end = '')
print(' ' * (len(Result)-len(str(abs(step)))-j), end = '')
print(str(abs(step)))
j += 1
print('-' * (len(Result)+2))
print(' ' + str(a*b))
실행결과
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[파이썬] 카페 주문 프로그램(클래스, 파일 이용) (1) | 2023.03.20 |
---|---|
[파이썬] 소수점 아래 n자리 수까지 출력(반올림 없이 출력) (0) | 2022.05.08 |
파이썬 Data Type Exercise(홀수 리스트, 짝수 리스트, 리스트 내림차순 정렬) (0) | 2021.09.29 |
파이썬 Data Type Exercise (소문자→대문자 변환, 문자열 바꾸기) (0) | 2021.09.29 |