[python]조건과 반복, 리스트와 튜플 기반의 미니 프로젝트/종합 소득과세 계산/디지털 형태의 정수 출력/ 실생활 게임 코딩구현/로또/가위바위보
종합소득 과세와 누진 공제액 계산
mini project 1
종합 소득 과세 표준 표의 이해와 누진 공제액 계산 기본
종합 소득세 과세 방법을 이해하고 소득 금액에 따른 세금 계산
income = 12_000000 // 0의 입력 편의를 위해 중간에 _를 사용할 수 있다.
rate = 6/100
print(income * rate)
720000.0
income = 20_000000
rate1 = 6
rate2 = 15
tax = 12_000000 * rate1/100 + (income - 12_000000) * rate2/100
print(MAX)
1920000.0
mini project2
누진 공제액의 이해
누진 공제액 108만원은 무엇일까?
세금 계산의 편의를 위해 과세 표준 금액에 해당하는 최고 세율만 곱한 후, 과세 구간에 따라 빼야 할 금액
1200만원 초과 ~ 4600만원 이하 구간에서의 누진 공제 금액
1200만원이 넘는 소득에 대한 세율 15%를 모든 소득 금액에 적용하면,
1200만원 이하의 구간에서는 15% - 6%인 9%에 대해 더 많은 세금이 계산
이 차감해야 할 금액(1200만원 * (15%-6%)인 1백8만원)
smoney = 12_000000
rate1 = 6
rate2 = 15
deduction = smoney * (rate2 - rate1)/100
print('누진 공제액:{:,}'.format(deduction)) // 수에 천단위마다 콤마가 표시된다
누진 공제액:108,000,000
mini prject 3
종합 소득 과세 표준 표 계산 출력
종합 소득 과세 표준 구간에 따른 기준 종합 소득
base = (0, 12_000000, 46_000000, 88_000000, 150_000000, 300_000000, 500_000000)
종합 소득 과세 표준 구간에 따른 세율
rate = [6,15,24,35,38,40,42]
구간에 따른 기준 소득 금액
base = (0, 12_000000, 46_000000, 88_000000, 150_000000, 300_000000, 500_000000)
구간에 따른 세율
rate = [6,15,24,35,38,40,42]
누진 공제 금액 계산
deduction = [] // 빈 누진 공세 금액
for i in range(len(base)-1):
dmoney = 0
brate = rate[i+1]
각 구간에서의 누진 공제액을 계산해 합
for j in range(i+1):
dmoney += (base[j+1] - base[j] * (brate - rate[j])/100)
deduction.append(dmoney) // 누진 공제 리스트에 추가
mini project 4
종합 소득 세금 출력
taxrate = [(6,0),(15,1_080_000),(24,5_220_000), (35, 14_900_000),
(38, 19_400_000), (40,25_400_000), (42,35_400_000)]
base = (0, 12_000000, 46_000000, 88_000000, 150_000000, 300_000000, 500_000000)
def getsection(income):
if base[6] < income:
section = 6
elif base[5] < income:
section = 5
elif base[4] < income:
section = 4
elif base[3] < income:
section = 3
elif base[2] < income:
section = 2
elif base[1] < income:
section = 1
else:
section = 0
return section
income = int(input('종합 소득 금액 입력 >>>'))
section = getsection(income)
tax = income * taxrate[section][0]/100 - taxrate[section][1]
print('종합 소득: {:,.0f}'.format(income))
print('세율:{}%'.format(taxrate[section][0]))
print('세금:{:,.0f}'.format(tax))
============ RESTART: C:/Users/study/파이썬 연습과제/iokp.py ===========
종합 소득 금액 입력 >>>40000000
종합 소득: 40,000,000
세율:15%
세금:4,920,000
>>>
디지털 형태의 정수 출력
mini project 6
0에서 5까지의 자릿수로 구성되는 정수를 디지털 정수 모양으로 출력
LCD = [[ "lllll",
"l l",
"l l",
"l l",
"lllll"],
[ " l ",
" ll ",
" l ",
" l ",
" llll"],
[ "lllll",
" l",
"lllll",
"l ",
"lllll"],
[ "lllll",
" l",
"lllll",
" l",
"lllll"],
[ "l l",
"l l",
"lllll",
" l",
" l"],
[ "lllll",
"l ",
"lllll",
" l",
"lllll"]]
ROW = 5
def printLCD(digit):
for row in range(ROW):
for i in range(len(digit)):
num = int(digit[i])
print(LCD[num][row], end = ' ')
print()
def checkdgt(s):
tag = True
for c in s:
if c not in '012345':
tag = False
break
return tag
snum = '7'
while not checkdgt(snum):
snum = input("0 - 5 자릿수로만 정수형태 1개 입력 >>")
printLCD(snum)
============ RESTART: C:/Users/study/파이썬 연습과제/iokp.py ===========
0 - 5 자릿수로만 정수형태 1개 입력 >>2014
lllll lllll l l l
l l l ll l l
lllll l l l lllll
l l l l l
lllll lllll llll l
>>>
실생활 게임을 코딩으로 구현
mini project 7
가위바위보게임
항목 앞의 키에는 승자, 값에는 패자의 손 모양을 기술
from random import choice
madewin = {'가위' : '보',
'바위' : '가위',
'보' : '바위'}
game = ['가위# 바위# 보 게임','가위','바위','보']
msg = ['비겼습니다', '축하합니다! 당신이 winner*^^*']
msg.append('아쉽지만, 컴퓨터가 이겼습니다')
print((game[0] + '시작').center(55,'='))
while True:
try:
s = '0(종료), 1(가위), 2(바위), 3(보[자기]) 중 하나 선택 >>'
num = int(input(s))
except:
num = 1
if num == 0:
break;
if not( 0 <= num <=3):
print('\t 입력이 잘못됐습니다. 다시하세용 ~~')
continue;
player = game[num]
com = choice(game[1:])
if player == com:
winner = 0
elif madewin[player] == com:
winner = 1
else:
winner = 2
print('당신: ', player, 'vs', '컴퓨터', com)
print(msg[winner] + '\n')
print('\n','종료합니다'.center(55,'='))
============ RESTART: C:/Users/study/파이썬 연습과제/iokp.py ===========
=====================가위# 바위# 보 게임시작====================
0(종료), 1(가위), 2(바위), 3(보[자기]) 중 하나 선택 >>1
당신: 가위 vs 컴퓨터 가위
비겼습니다
0(종료), 1(가위), 2(바위), 3(보[자기]) 중 하나 선택 >>3
당신: 보 vs 컴퓨터 가위
아쉽지만, 컴퓨터가 이겼습니다
0(종료), 1(가위), 2(바위), 3(보[자기]) 중 하나 선택 >>0
=========================종료합니다=========================
>>>
mini project 8
로또 번호 모의 실험
from random import sample
from random import randint
rank = {6 : ('1등', 1000000000),
5 : {1:('2등', 50000000),
0:('3등', 10000000)},
4 : ('4등', 50000),
3 : ('5등', 5000)
}
def makenum(same):
nums = winnum.copy()
for i in range(6-same):
nums.pop()
while len(nums) != 6:
n = randint(1,45)
if n not in winnum:
nums.add(n)
return nums
def getwinner(lotto):
global bonus
for i, item in enumerate(lotto):
print('%c' % (ord('A') + i), end= ' ')
win = winnum.intersection(item)
if win:
wincnt = len(win)
print('당첨 번호 개수 %d, ' % wincnt, end='')
printnums(win)
if 3 <= wincnt:
grade = rank[wincnt]
if 5 == wincnt:
if bonus in item:
print('\t 보너스 번호 %d도 맞춤 !!! ' % bonus)
grade = rank[wincnt][1]
else:
grade = rank[wintcnt][0]
print('\t%s %s원' % (grade[0],grade[1]))
else:
print('\t 2개 이하 맞춰, 꽝!')
else:
print('모두 꽝!!!!')
def printlotto(lotto):
for i, item in enumerate(lotto):
print('%c 자동' % (ord('A') + i), end = ' ')
printnums(item)
print()
def printnums(nums):
for num in sorted(nums):
print('%02d' % num, end=' ')
print()
winnum = set(sample(list(range(1,46)), 7))
bonus = winnum.pop()
print('당첨 번호:', end='' )
print(winnum)
print('보너스 번호:',bonus)
print()
lottos = []
rank2num = winnum.copy()
rank2num.pop(); rank2num.add(bonus)
lottos.append(rank2num)
rank3num = winnum.copy()
rank3num.pop()
while True:
num = randint(1,45)
if num != bonus and num not in rank3num:
rank3num.add(num)
break
lottos.append(rank3num)
for i in range(5):
lottos.append(makenum(4 - i))
printlotto(lottos)
getwinner(lottos)
============ RESTART: C:/Users/study/파이썬 연습과제/iokp.py ===========
당첨 번호:{38, 44, 12, 15, 28, 29}
보너스 번호: 4
A 자동 04 12 15 29 38 44
B 자동 11 12 15 38 41 44
C 자동 12 15 21 24 27 44
D 자동 02 03 12 15 35 37
E 자동 01 04 07 15 34 39
F 자동 04 08 13 20 22 31
A 당첨 번호 개수 5, 12 15 29 38 44
보너스 번호 4도 맞춤 !!!
2등 50000000원
B 당첨 번호 개수 4, 12 15 38 44
4등 50000원
C 당첨 번호 개수 3, 12 15 44
5등 5000원
D 당첨 번호 개수 2, 12 15
2개 이하 맞춰, 꽝!
E 당첨 번호 개수 1, 15
2개 이하 맞춰, 꽝!
F 모두 꽝!!!!
>>>