프로그램
[파이썬] 문제 : 세자리수와 한자리수 곱셈 과정
오디세이99
2023. 4. 3. 01:44
728x90
반응형
opnd1 = int(input("피연산자1 : "))
opnd2 = int(input("피연산자2 : "))
opnd_lst = [] # 각 자리수 값을 저장하기 위한 리스트 변수
op1 = opnd1 # 입력 받은 정수을 op1에 대입. op1은 게산하면서 325 -> 25 -> 5 로 변하게 됨. 이 용도 임
opnd_lst.append(op1//100) # 세 자리수 중 제일 앞에 있는 값 분리
op1 -= opnd_lst[-1] * 100 # op1을 계산 325에서 325 - 300 = 25와 같이 계산
opnd_lst.append(op1//10) # op1에는 25가 있기 때문에 나누어 몫이 2 계산
op1 -= opnd_lst[-1] * 10 # op1은 5가 됨
opnd_lst.append(op1)
# 두전째 전개
print('= ( ',end='')
for i in range(len(opnd_lst)):
if i < len(opnd_lst)-1:
print(opnd_lst[i],'+ ',end='')
else:
print(opnd_lst[i],end='')
print(' ) * ', opnd2)
# 세번째 전개
print('= ',end='')
for i in range(len(opnd_lst)):
if i < len(opnd_lst)-1:
print(opnd_lst[i],'*',opnd2,'+ ', end='')
else:
print(opnd_lst[i],'*',opnd2)
print('=',opnd1 * opnd2)
입력1이 세 자리수와 같이 고정되지 않아도 계산 할 수 있는 코드
opnd1 = int(input("피연산자1 : "))
opnd2 = int(input("피연산자2 : "))
opnd_lst = [] # 각 자리수 값을 저장하기 위한 리스트 변수
n = len(str(opnd1)) # 입력된 opnd1의 자리수325면 3자리) 구하기. 문자열로 변환해 문자열의 길이로 함
op1 = opnd1 # 입력 받은 정수을 op1에 대입. op1은 게산하면서 325 -> 25 -> 5 로 변하게 됨. 이 용도 임
for i in range(n-1,-1,-1): # 값이 325일때, 앞자리 부터 분리하기 위해 range를 큰 수에서 작아지도록 함
p = (op1 // (10**i)) # 10**i 계산하면 100, 10 등 계산. 이를 op1에 나누어 몫을 p( 정수에서 제일 팡자리 수) 로 계산
op1 -= p*(10**i) # op1 계산. 지금까지 op1이 325 였으면 300을 빼고 25가 남도록 계산. 325에서 p가 3이 되면 300을 뺌
opnd_lst.append(p) # 구해진 p(325애서 3, 2, 5)를 opnd_lst 리스트 변수에 저장
# 두전째 전개
print('= ( ',end='')
for i in range(len(opnd_lst)):
if i < len(opnd_lst)-1:
print(opnd_lst[i],'+ ',end='')
else:
print(opnd_lst[i],end='')
print(' ) * ', opnd2)
# 세번째 전개
print('= ',end='')
for i in range(len(opnd_lst)):
if i < len(opnd_lst)-1:
print(opnd_lst[i],'*',opnd2,'+ ', end='')
else:
print(opnd_lst[i],'*',opnd2)
print('=',opnd1 * opnd2)
728x90
반응형