goodthings4me.tistory.com
파이썬 코딩 시 사용자의 터미널 입력을 받아야 하는 경우, for문보다는 while문으로 사용하는데 input() 함수로 입력받는 데이터 type의 문제로 인해 예외 처리를 하거나 파이썬 숫자 판별 함수를 이용해야 할 때가 있다.
숫자 판별 함수와 while 반복문
[파이썬 소스 코드]
while True:
try:
games = int(input('진행 게임수를 입력하세요 > '))
if games <= 0:
continue
else:
break
except ValueError:
continue
print(f'games: {int(games)}')
- int(input('진행 게임수를 입력하세요 > ')) 부분에 숫자가 아닌 값이 입력되면 에러가 난다. ValueError: invalid literal for int() with base 10:
- while 반복문에서 예외 처리(try ~ except) 구문을 활용하여 input() 함수로 숫자를 입력받을 수 있고, 아래의 숫자 판별 함수를 이용하는 방법으로 할 경우 더 간단하게 할 수 있다.
[숫자 판별 함수 이용]
games = ''
while games == '0' or not games.isdecimal():
games = input('진행 게임수를 입력하세요 > ')
print(f'games: {int(games)}')
[숫자 판별 함수]
파이썬의 isdecimal(), isdigit(), isnumeric() 함수에 대해 알아보면,
a = "369"
b = "-1"
c = "0"
d = "½"
e = "3²"
f = "2e3"
g = "0xf"
print(f'"369": {a.isdecimal()}, {a.isdigit()}, {a.isnumeric()}')
# "369": True, True, True
print(f'"-1": {b.isdecimal()}, {b.isdigit()}, {b.isnumeric()}')
# "-1": False, False, False
print(f'"0": {c.isdecimal()}, {c.isdigit()}, {c.isnumeric()}')
# "0": True, True, True
print(f'"½": {d.isdecimal()}, {d.isdigit()}, {d.isnumeric()}')
# "½": False, False, True
print(f'"3²": {e.isdecimal()}, {e.isdigit()}, {e.isnumeric()}')
# "3²": False, True, True
print(f'"2e3": {f.isdecimal()}, {f.isdigit()}, {f.isnumeric()}')
# "2e3": False, False, False
print(f'"0xf": {g.isdecimal()}, {g.isdigit()}, {g.isnumeric()}')
# "0xf": False, False, False
- 각 함수의 용도는 다르다. isnumeric()의 경우 분수, 제곱 등까지 True로 받을 수 있는 반면에
- isdecimal()의 경우 0과 양의 정수 문자열에 대해서만 True로 입력받는다.
- 위 a ~ g까지의 예시 중에서 게임수를 입력받는 것은 양의 정수만을 True로 입력받는 isdecimal()이다.
- 다만, "0"도 True이기 때문에 이 부분에 대해서 반복문이 동작하도록 적용하면 되기 때문에 while 문에 games == "0" 부분을 추가했다.
[파이썬 나눗셈 ZeroDivisionError 처리]
def div_ex1():
num1 = int(input('피제수 입력: '))
num2 = int(input('제수(0은 제외) 입력: '))
print(f'{num1} ÷ {num2} = {num1 / num2}')
div_ex1()
- 제수에 0 입력 시 ZeroDivisionError: division by zero
- 제수에 숫자가 아닌 값이 입력되면 ValueError: invalid literal for int() with base 10:
def div_ex2():
num1 = int(input('피제수 입력: '))
while True:
num2 = input('제수(0은 제외) 입력: ')
if num2 == '0':
print('0으로 나눌 수 없어요')
continue
elif not num2.isdecimal():
print('입력값이 정수가 아닙니다.')
continue
else:
print(f'{num1} ÷ {int(num2)} = {num1 / int(num2)}')
break
div_ex2()
- 숫자 이외의 값에 대해 조건문 처리를 위해 숫자 판별 함수를 사용해서 처리할 수 있는데, 이 경우에는 입력값을 문자열 type으로 받아야 함
- 다만, 파이썬에서 숫자를 판별하는 함수 중 isnumeric() 함수은 분수나 제곱값을 True로 처리하고,
- isdigit() 함수도 제곱을 True로 처리하기 때문에 int() 타입 변환 시 에러 발생한다. 그래서 양의 정수 입력을 받을 때는 isdecimal() 함수를 사용한다.
def div_ex3():
num1 = int(input('피제수 입력: '))
while True:
try:
num2 = int(input('제수(0은 제외) 입력: '))
print(f'{num1} ÷ {int(num2)} = {num1 / int(num2)}')
break
except ZeroDivisionError:
print('0으로 나눌 수 없어요')
continue
except ValueError:
print('입력값이 정수가 아닙니다.')
div_ex3()
- 예외 처리로 하는 하는 코드임.
- input() 입력값을 int()로 변환하여 나눗셈을 하되 에러 발생 시 예외 처리로 다시 입력받게 한다.
블로그 인기글
[국세청] 현금영수증가맹점으로 가입바랍니다. 메시지 해결방법(개인사업자)
▶ 현금영수증 가맹점 가입 메시지를 받고... 온라인 쇼핑몰 사업을 시작하려고 사업자등록증을 발급받고 난 후 얼마 안 있어서 국세청으로부터 어느 시점까지 '현금영수증 가맹점'으로 가입하라는 문자메시지가 받았었다. 그 메시지 기한이 오늘 도래했는데, 인터넷에서 찾아보니 홈택스에서 현금영수증 발급 사업자 신청을 할 수가 있었다. [관련내용] 홈>국세정책/제도>전자(세금)계산서/현금영수증/신용카드>현금영수증∙신용카드>가맹점가입 ▶ 홈택스 사이트에서 신청하는 절차는 다음과 같다. 우선, 홈택스에 로그인을 해야 합니다. 세상이 좋아져서 공인인증서 없이도 손쉽게 간편인증 로그인이 가능하다. 여러 인증방법 중 카카오톡 인증이 가장 편리한 거 같다. 간편인증 로그인 후 상단 '조회/발급' 탭 클릭 후 '현금영수증>현금..
goodthings4me.tistory.com
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter) ※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip ▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다) 실행하기 : 프로그램 실행 버튼 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료 실행 결과 확인 : 엑셀 파..
goodthings4me.tistory.com
유튜브 영상 등의 URL 주소를 QR코드로 만들기
네이버 QR코드, makeQR, MUST QRcode, 무료 온라인 QRCode 생성기 등의 웹사이트에서 유튜브 영상 등의 URL을 입력하여 QR코드를 만들 수 있다. QR코드를 생성할 수 있는 사이트와 프로그램 URL 주소를 붙여넣기 한 후 "QR 코드 생성" 버튼을 클릭하면 큐알코드가 이미지로 생성되고, 다운로드도 할 수 있는 사이트 https://truedoum.com/useful/qrcode/ # 유튜브에서 동영상 URL을 복사하는 방법 유튜브에서 QR코드를 만들 동영상을 검색한다. 해당 동영상을 클릭한다. 동영상 위에서 마우스 우클릭 후 나오는 팝업창에서 “동영상 URL 복사”를 클릭하거나 영상 하단의 “공유”를 클릭하여 나온 창에서 URL를 복사한다. 아래의 웹사이트 중 하나를 선택한 후 복사..
goodthings4me.tistory.com
'코딩 연습 > 파이썬 기초(예제)' 카테고리의 다른 글
파이썬 팩토리얼 (factorial) 구하는 방법 (0) | 2022.05.09 |
---|---|
판매 데이터 파일(텍스트) 읽고 계산한 후 결과를 저장하기 (0) | 2022.05.09 |
구구단 게임 [파이썬기초예제] (0) | 2022.04.28 |
진수 변환 - 2진수 변환, 8진수 변환, 16진수 변환 [파이썬기초예제] (0) | 2022.04.23 |
가위바위보 게임 [파이썬기초예제] (0) | 2022.04.21 |
댓글