본문 바로가기
First step/AI 기초반

[TIL] 21.06.15 파이썬 연습문제 while,for 반복문활용

by Joshua21 2021. 6. 15.


#학점문제 for문
scores = [86,72,98,60,45]
grade_counter=[0,0,0,0,0]
for x in scores:
    if x >=85:
        grade_counter[0]+=1
    elif x >=70  :
        grade_counter[1]+=1
    elif x >=55 :
        grade_counter[2]+=1
    elif x >=40 :
        grade_counter[3]+=1
    elif x > 0 :
        grade_counter[4]+=1
    x+=1
print(grade_counter)


#학점문제 while문
scores = [86,72,98,60,45]
grade_counter=[0,0,0,0,0]
i=0
x=0
while i < len(scores):
    x=scores[i]
    if x >=85:
        grade_counter[0]+=1
    elif x >=70  :
        grade_counter[1]+=1
    elif x >=55 :
        grade_counter[2]+=1
    elif x >=40 :
        grade_counter[3]+=1
    elif x > 0 :
        grade_counter[4]+=1
    i+=1
print(grade_counter)

             
#특정 알파벳 이름에 있는  포함된 사람 세기
name_list=['matthew','mark','luke','jhon','paul','peter']
count=0

for name in name_list :
    for n in name:
        if n=='m' or n=='h' :
            count+=1
            break
print('m또는 h가 이름에 포함된 사람은', count,'명 입니다.')

#합격자에게만 합격메세지 출력하기
marks= [90,25,67,45,80]
for i in marks:
    if i >60:
        print(marks.index(i)+1,'번 학생 축하합니다. 합격입니다.')
    continue

marks= [90,25,67,45,80]
i=0

while i < len(marks):
    if marks[i] > 60  :
        print(i+1,'번 학생 축하합니다. 합격입니다.')                
    i+=1
    continue
    
marks= [90,25,67,45,80]
i=0

for mark in marks:
    i=+1
    if i < 60:
        continue
    print(i+1,'번 학생 축하합니다. 합격입니다.')


#연습문제 리스트 앞뒤바꿔출력하기
arr = [1,4,2,3]

left,right = 0,len(arr)-1

while left < len(arr)//2: # left < right 도 같은값
    arr[left],arr[right]=arr[right],arr[left]
    left+=1
    right-=1
print(arr)    


x = int(input())

for i in range(1,10):
    print(x,'*',i,'=',x*i)
#구구단
x = int(input())
y=1
while y <10 :
    print(x,'*',y,'=',x*y)
    y+=1 

#구구단
for i in range(1,10):
    for x in range(2,10):
        print(x,'X',i,'=',x*i,end='/t')
    print()    


# 득표수 계산하여 당선자 발표하기
votes  = [2,5,3,4,1,5,1,5,5,3]
candidates=['','전정국','김남준','박지민','정호석','김태형']
get=[0,0,0,0,0,0]
i=0
x=0

while i < len(votes):
    x=votes[i]
    if x == 1:
        get[1]+=1
    elif x == 2:
        get[2]+=1
    elif x == 3:
        get[3]=1
    elif x == 4:
        get[4]+=1        
    else:
        get[5]+=1
    i+=1

largest=0
for i in get:
    if i>largest :
        largest = i
        

y = get.index(largest)

print(candidates[y],'후보가 총',largest,'표를 얻어 당선되었습니다.')




# for문으로  소수 찾기
num = int(input())
for i in range(1,num+1):
    for j in range(i,num+i):
        if j % num == 0:
            print(num,end=' ' )
        else:
            print(j%num,end=' ')
    print()

total=0
i=1
while i <=100:
    if i%2 == 0:
        total+=i**2

    else :
        total-=i**2

    i+=1        
print(total)        


#연습 문제 소수찾기
num= int(input('찾을 범위를 입력하세요 :'))

for i in range(2,num):
    for x in range(2,num-1):
        i+=1
        if i%x == 0 :
            print(num)
            x+=1
       

#1~7/2,~7,1/3~7,1,2 한줄에 7개씩 숫자표시하며 다음줄로가면 한칸씩미뤄 출력하기 정답
num= int(input('찾을 범위를 입력하세요 :'))

i=2
line=0

while i <= num:
    j=2
    while j<=i:
        if i%j == 0:
            break
        j+=1
    if i ==j :
        print(i,end=' ')
        line+=1
        if line==7:
            line = 0
            print()
    i+=1            






#타자 게임 정답 
import time
import random

w = ['python','kdigital','sky','sea','ireland','korea','taiwan','japan','america','computer']
n=1
print('타자게임 준비되면 Enter')
input()
start = time.time()
q=random.choice(w)

while n<=5:
    print('문제',n)
    print(q)
    x=input()
    if q==x:
        print('pass')
        n+=1
        q=random.choice(w)  
    else:
        print('retry')
end = time.time()
et = end - start
et= format(et,".2f")
print('걸린시간:',et,'sec')





#자판기 만들기 내가 접근한 방식
smenu=('1.사이다 : 1200원 / 2.콜라 : 1100원 / 3.생수 : 700원 / 4.주스 : 1500원 / 5.커피 : 1300원')
print(smenu,'\n') #문자열로 메뉴와 가격을 출력함 

#금액 투입구간 시작
intotal=0
mnum=1

while mnum > 0:
    mnum = int(input('1:10,000원/2:5,000원/3:1,000원/4:500원/5:100원/0:입력완료'))
    if mnum==1:
        intotal+=10000    
    elif mnum==2:
        intotal+=5000
    elif mnum==3:
        intotal+=1000
    elif mnum==4:
        intotal+=500
    elif mnum==5:
        intotal+=100
    elif mnum==0: #0 입력하면 반복문을 종료함
        break
    else: #0~5가아닌 다른 숫자를 입력시 잘못입력됨을 알리고 다시 금액을 입력하도록 함
        print('잘못입력하셨습니다.')
print('투입하신 금액은 :',intotal) # 투입한금액의 총합 표시


dnum = 1
outtotal=0
while 0 < dnum  :
    dnum= int(input(smenu))
    if dnum==1:
        if 0 <= (intotal-1200) and 1200<intotal-outtotal: #투임금액,잔여금액 모두 물건가격 이상일떄 잔액 출력
            outtotal+=1200
            print('잔액은 :',intotal-outtotal)
        else:
            print('잔액이 부족합니다')
    elif dnum==2:
        if 0 <= (intotal-1100) and 1100<intotal-outtotal:
            outtotal+=1100
            print('잔액은 :',intotal-outtotal)
        else:
            print('잔액이 부족합니다')
    elif dnum==3:
        if 0 <= (intotal-700) and 700< intotal-outtotal:
            outtotal+=700
            print('잔액은 :',intotal-outtotal)
        else:
            print('잔액이 부족합니다')
    elif dnum==4:
        if 0 <= (intotal-1500) and 1500< intotal-outtotal:
            outtotal+=1500
            print('잔액은 :',intotal-outtotal)
        else:
            print('잔액이 부족합니다')
    elif dnum==5:
        if 0 <= (intotal-1300) and 1300<intotal-outtotal:
            outtotal+=1300
            print('잔액은 :',intotal-outtotal)
        else:
            print('잔액이 부족합니다')
    elif dnum==0: # 0누르면 반복문 종료
        break
    else:#0~5가아닌 다른 숫자를 입력시 잘못입력됨을 알리고 다시 음료를 선택하도록 함
        print('잘못입력하셨습니다.')
print('잔액은 :',intotal-outtotal,'입니다') #투입된 금액 총합에서 각 물건의 가격을 누적해서 감해서 잔액출력    

nchange=intotal-outtotal #잔돈
lchange=[0,0,0,0,0]#금액별로 갯수를 저장해줄 임의이 리스트 생성
while 100 <= nchange:
    if 0 < nchange//10000 :
        lchange[0]+=1
        nchange-=10000
    elif 0 < nchange//5000 :
        lchange[1]+=1
        nchange-=5000
    elif 0 < nchange//1000 :
        lchange[2]+=1
        nchange-=1000
    elif 0 < nchange//500 :
        lchange[3]+=1
        nchange-=500    
    elif 0 <= nchange//100 :
        lchange[4]+=1
        nchange-=100

#잔돈을 각 통화별 몇개씩 반환하는지표시 
print('만원권:',lchange[0],'오천원권:',lchange[1],'천원권',lchange[2],'500원',lchange[3],'100원',lchange[4],end=' ')    











'First step > AI 기초반' 카테고리의 다른 글

[TIL]21.06.11  (0) 2021.06.23
[TIL]21.06.10  (0) 2021.06.23
[TIL]21.06.09  (0) 2021.06.23
[TIL]21.06.08  (0) 2021.06.23
[TIL]21.06.07  (0) 2021.06.23