Backend/Python

Python 파이썬 반복문 while 연습 예제

Ayel 2023. 6. 30. 09:07

 

 

파이썬 반복문 while 예제 연습

 

 

파이썬 반복문 while 개념

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

Python 파이썬 제어문 : 조건문, 반복문

제어문 : 코드의 흐름을 제어하는 문장 특정 상황에 따라 코드를 선택하여 실행하거나 또는 코드의 일정부분을 반복하여 실행하는 문장 제어문의 종류 : 조건문(if ~ else), 반복문(while, for) 조건문

developernew.tistory.com

 

 

 


 

 

ex1.

 

1부터 100의 정수를 출력하시오

 

i=1

while i<=100:
    print(i)
    i+=1

 

자바와 유사한 구조

 

 

ex2.

 

1부터 10까지의 합 구하기

 

i=1
sum=0

while i<=10:
    sum+=i
    i+=1
else:
    print("합계 : {}".format(sum))

 

while에 else값 사용 가능

 

 

ex3.

 

10~20 사이의 값을 입력받아 1부터 입력받은 수까지의 합을 구하시오

 

while True:
    user = int(input("10~20사이의 숫자를 입력하세요 : "))

    if user<10 or user>20:
        print("잘못된 값을 입력하셨습니다. 다시 입력해주세요.")
    else:
        break

i=1
sum=0
while i<=user:
     sum+=i
     i+=1

print("합계 : {}".format(sum))

 

 

ex4.

 

두 수의 최소공배수와 최대공약수를 구하는 프로그램을 작성하라
최소공배수 = 공배수 중에서 가장 작은 정수
최대공약수 = 공약수 중에서 절대치가 가장 큰 수

 

a = int(input("정수 입력 : "))
b = int(input("정수 입력 : "))

#s = min(a,b)
if a > b:
    s = b
else:
    s = a

i = s

while i >= 1:
    if a % i == 0 and b % i == 0:
        print("최대 공약수 : {}".format(i))
        break
    i-=1

if a > b:
    big = a
else:
    big = b

i = 1

while True:
    if big*i % s == 0:
        print("최소 공배수 : {}".format(big * i))
        break
    i+=1

 

 

ex5.

 

어떤 수의 약수를 구하는 프로그램을 작성하여라
약수 = 어떤 수를 정수로 나눌 수 있는 수

 

su = int(input("정수 입력 : "))

i = 1

while i<=su:
    if su % i == 0:
        print(i)
    i+=1

 

 


 

 

Exercise1

 

 

업다운 게임을 구현

컴퓨터에게 1부터 100 사이의 정답을 생성하도록 코드 구현한 후
사용자가 숫자를 입력하여 정답을 맞추도록 프로그래밍하세요

<게임의 상태>
[   업  ] 사용자가 정답보다 낮은 값을 입력한 경우
[ 다운 ] 사용자가 정답보다 높은 값을 입력한 경우
[ 정답 ] 사용자가 정답과 같은 값을 입력한 경우, 게임 종료

게임 종료시 총 입력한 횟수를 화면에 출력

 

 

import random

su = random.randrange(1,101)
cnt = 0

while True:
    user = int(input("업다운 게임! 1~100사이의 정수를 입력하세요 : "))
    cnt+=1
    if su==user:
        print("정답입니다!")
        break
    elif su>user:
        print("업!")
    else:
        print("다운")

print("총 입력 횟수 : {}".format(cnt))

 

 

출력화면

 

 


 

 

Exercise2

 

 

사용자가 틀릴 때까지 구구단 문제를 출제하는 프로그램 구현
 (2 x 1 부터 19 x 9까지 구현)

사용자가 3문제를 틀리면 게임오버! 라는 메세지를 출력한 뒤 종료
종료 전에 정답 개수와 점수를 출력

[1] 일반 정답 +10점
[2] 어려운 문제 정답은 5점 추가 (총 15점) 11단부터~
[3] 틀리면 5점 감점

 

 

import random

wrong =0
crt = 0
score = 0

while wrong<3:
    a = random.randrange(2,20)
    b = random.randrange(1,10)
    quest = a*b
    ans = int(input(("[구구단 문제]\n{} X {} = ".format(a,b))))

    if quest==ans:
        print("정답입니다! 10점!")
        crt+=1
        score+=10
        if a>10:
            print("어려운 문제 정답! 5점 추가")
            score+=5
    else:
        wrong+=1
        print("틀렸습니다. 5점 감점")
        score-=5

print("게임오버!\n3문제 틀려서 게임이 종료됩니다.\n정답 갯수 : {}\n점수 : {}".format(crt,score))

 

 

출력화면

 

 


 

 

Exercise3

 

 

[ 아이템 강화 시뮬레이션 ]

1. 아이템은 1번 강화하는데 현금 1000원이 필요하다
2. 아이템은 처음에 레벨이 0이다
3. 강화가 성공할 확률은 35%이고 성공하면 레벨이 1 증가
4. 강화가 실패할 확률은 30%이고 실패하면 레벨이 1 감소
5. 그 외의 경우에는 아무런 변화가 없다

0레벨의 아이템을 10레벨로 만들기 위해 내가 쏟아 부어야 되는 현금을 계산하세요

 

 

import random

lv = 0
cost = 1000
cnt = 0

'''
1-100
1-35 성공
36-65 실패
66-100 변화없음
'''

print("<아이템 강화하기>")
while lv<11:
    ug = random.randrange(1,101)

    if ug<36:
        print("강화 성공! Lv +1")
        lv+=1
        cnt+=1
    elif ug>=36 and ug<66:
        print("강화 실패! Lv -1")
        lv-=1
        cnt+=1
    else:
        print("아무런 변화가 없습니다. Lv +0")
        cnt+=1
    
print("레벨 10 달성! {} 회 강화 시도 / {} 원 사용".format(cnt,cnt*cost))

 

 

출력화면

 

그냥 몇 번 더 돌려 봤는데 1114회 강화 시도 진짜 선넘은 거 아니냐..

이쯤되면 게임사 테러해도 인정..