개발 언어를 배우는 데 있어서 직접 프로그래밍을 해보는 것만큼 좋은 것은 없습니다.
구구단 프로그래밍을 하는 방법은 여러 가지가 있을 텐데요
각자의 코딩을 서로 비교해 좋을 것 같습니다.
# 2단부터 9단까지 출력 예제
구구단은 다음과 같이 2단부터 9단까지 1씩 증가하는 8개의 그룹으로 이루어집니다.
- 2단, 3단, 4단, 5단, 6단, 7단, 8단, 9단
각 단은 1부터 9까지 1씩 증가하는 9개의 숫자의 곱을 계산합니다.
- 2 * 1, 2, 3, 4, 5, 6, 7, 8, 9
- 3 * 1, 2, 3, 4, 5, 6, 7, 8, 9
- ...
- 9 * 1, 2, 3, 4, 5, 6, 7, 8, 9
2단부터 9단까지 출력 예제
for i in range(2,10):
print("*"*10)
print(str(i)+" 단")
print("*"*10)
for j in range(1,10):
print(str(i) +"+"+ str(j) + "=" + str(i*j))
결과
**********
2 단
**********
2+1=2
2+2=4
2+3=6
2+4=8
2+5=10
2+6=12
2+7=14
2+8=16
2+9=18
**********
3 단
**********
3+1=3
3+2=6
3+3=9
3+4=12
3+5=15
3+6=18
3+7=21
3+8=24
3+9=27
... 중략 ...
**********
9 단
**********
9+1=9
9+2=18
9+3=27
9+4=36
9+5=45
9+6=54
9+7=63
9+8=72
9+9=81
# range()
range() : 일련의 숫자를 반복
range class는 다음과 같이 정의되어 있습니다.
class range(start, stop[, step]) start : 시작 매개 변수 (0 : 값이 생략되었을 경우) stop : 정지 매개 변수 (값을 포함하지 않음) step : 단계 매개 변수 (1 : 값이 없을 경우) |
예를 들어 보겠습니다.
range(10) 은 range(0,10) 과 동일하며 0보다 크거나 같고 10보다 작은 범위입니다. (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
range(5, 10) 은 5보다 크거나 같고 10보다 작은 범위입니다. (5, 6, 7, 8, 9)
range(0, 10, 3) 은 0보다 크거나 같고 10보다 작은 범위이며 숫자는 3씩 증가합니다. (0, 3, 6, 9)
값이 작아지게 하려면 다음과 같이 step을 음수로 사용합니다.
range(0,-10,-1)
이는 0부터 -9까지 범위를 나타냅니다. (0, -1, -2, -3, -4, -5, -6, -7, -8, -9)
※ python에서 range(0,10)을 호출하면 range(0,10)이 반환됩니다.
마치 list형 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 인 것처럼 동작하지만 list와 차이가 있습니다. 반복할 때 비로소 시퀀스의 연속적인 항목을 반환합니다. (현재 시점에서는 크게 중요하지 않습니다.)
간단하게 list(range(10)) 을 입력하면 0~9의 값이 list형으로 값을 확인할 수 있습니다.
위 range 예제 list 형으로 값을 확인해 보겠습니다.
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> list(range(0,10,3))
[0, 3, 6, 9]
>>> list(range(0,-10,-1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
# for 문
for문 : 모든 시퀀스(sequence)를 순서대로 표시합니다.
for i in range(2,10):
2~9 까지 정수가 하나씩 i변수에 대입됩니다.
for j in range(1,10):
1~9 까지 정수가 하나씩 j 변수에 대입됩니다.
# str, int, float, type
숫자형인 int 나 float는 string 타입과 같이 출력할 수 없습니다.
위 구구단 코드를 print(i+"단") 으로 작성하면 다음 에러가 납니다.
Traceback (most recent call last):
File "c:/Users/ymshim/Python38/Multiplication.py", line 4, in
print(i+"단")
TypeError: unsupported operand type(s) for +: 'int' and 'str'
int 형과 string형을 같이 사용할 수 없기 때문에 나는 에러입니다.
이럴 때 str()을 사용하여 int 형을 string으로 바꿔줄 수 있습니다.
print(str(i)+" 단")하면 저희가 출력하고자 하는 내용이 출력됩니다.
반대로 string을 int() 나 float()을 사용하여 정수나 실수로 바꿀 수도 있습니다.
type(변수)를 사용하여 변수의 타입을 확인할 수도 있습니다.
# 값을 입력받는 구구단 계산기
약간의 코드를 추가하여 값을 입력 받는 구구단 계산기를 만들어 보았습니다..
# -*- coding: utf-8 -*-
# Python 3.8.2
# FileName : Multiplication.py
def Multiplication(num):
if(num >= 1):
print("[ "+ str(num) + " 단 ]")
for i in range(1,10):
print(str(num) + " + " + str(i) + " = " + str(num * i) )
else:
print("0 보다 큰 수를 입력하세요")
if __name__ == '__main__':
print("*****************************************************")
print("* 구구단 계산기 입니다.")
print("* 숫자가 아닌 문자를 입력하면 프로그램이 종료됩니다.")
print("*****************************************************")
while True :
try:
Num = int(input("몇 단을 출력할까요: "))
if Num == "" :
break
else:
Multiplication(Num)
except ValueError:
print("*****************************************************")
print("* 프로그램이 종료됩니다.")
print("*****************************************************")
break
결과>
*****************************************************
* 구구단 계산기 입니다.
* 숫자가 아닌 문자를 입력하면 프로그램이 종료됩니다.
*****************************************************
몇 단을 출력할까요: 7
[ 7 단 ]
7 + 1 = 7
7 + 2 = 14
7 + 3 = 21
7 + 4 = 28
7 + 5 = 35
7 + 6 = 42
7 + 7 = 49
7 + 8 = 56
7 + 9 = 63
몇 단을 출력할까요: 12
[ 12 단 ]
12 + 1 = 12
12 + 2 = 24
12 + 3 = 36
12 + 4 = 48
12 + 5 = 60
12 + 6 = 72
12 + 7 = 84
12 + 8 = 96
12 + 9 = 108
몇 단을 출력할까요: 0
0 보다 큰 수를 입력하세요
몇 단을 출력할까요: abc
*****************************************************
* 프로그램이 종료됩니다.
*****************************************************
# -*- coding: utf-8 -*-
첫 줄에 문자열이 UTF-8 형식이라는 것을 명시하는 코드를 삽입하였습니다.
(참고로 VSCode에서는 Code에 한글이 들어가면 자동으로 UTF-8로 인코딩을 변환해 줍니다.)
def Multiplication(num) : 으로 구구단을 하는 함수를 선언합니다.
if 문으로 0보다 큰 수를 입력받을 때만 구구단을 출력합니다. 양수가 아니면 구구단을 출력하지 않습니다.
if __name__ == '__main__':
이 프로그램(Multiplication.py)을 직접 호출하면 if __name__ == '__main__': 가 True 가 되어 다음 문장이 수행됩니다.
다른 파일에서 이 프로그램을 사용할 때는 if __name__ == '__main__': 가 False 이 되어 다음 문장이 수행되지 않습니다.
while True : 로 구구단을 (break를 만나기 전까지) 무한 반복하게 합니다.
Num = int(input("몇 단을 출력할까요: ")) 으로 input 으로 입력받은 문자열을 int 로 변환하여 Num 변수에 대입합니다.
이때 문자열이 숫자 형태가 아닐 경우 에러가 발생합니다.
Traceback (most recent call last):
File "c:/Users/ymshim/Python38/Multiplication.py", line 32, in
Num = int(input("몇 단을 출력할까요: "))
ValueError: invalid literal for int() with base 10: 'a'
try:이 에러가 발생할 때 프로그램을 종료하기 위해 예외 처리를 하는 코드를 삽입하였습니다.
....
except ValueError :
....
int 형변환이 실패하면 except ValueError: 다음 구문이 실행되고 break를 만나 while 문이 종료됩니다.
구구단 계산기와 값을 입력받는 구구단 계산기를 만들어 보았습니다.
여러분들도 각자의 개성을 살려 만들어 보면 어떨까요?
'IT > Python' 카테고리의 다른 글
[Python] E-Mail Send - Email Bomber Test (0) | 2020.05.14 |
---|---|
[Python] Class 생성 - Log writer class 예제 (0) | 2020.05.08 |
[Python] 자료형 - 문자열(String) (0) | 2020.05.04 |
[Python] 자료형 - 숫자형과 연산자를 이용한 계산 (0) | 2020.05.02 |
[Python] 환경 구성 - Visual Studio Code 로 Python 개발 환경 만들기 (0) | 2020.04.28 |
댓글