반전공자

Python (feat. 데이터분석 기초) #2 (반복문, 오류처리구문, list) 본문

데이터분석

Python (feat. 데이터분석 기초) #2 (반복문, 오류처리구문, list)

하연01 2020. 12. 9. 18:00

2020.12.09 둘째날 

 

# for 

for 아이템 in 바구니:
    [실행구문]

 

# while

while [조건식]:
    [실행구문]

 

 

# 한번에 하나씩 1~100

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

 

for number in range(1,101):
    print(number)

 

# 무한반복문

 

 

 오류가 발생하면 프로그램이 자동으로 종료된다. (if 문자를 입력하면?)
  1. 오류가 발생한다면 별도로 처리를 해서 프로그램이 종료되지 않도록 한다.
     - 오류처리구문 try-execpt
  2. 오류가 생기지 않도록 처리를 추가한다. (다시 입력받기)
     - 무한 반복문

 

# 오류 발생하면 처리하는 방법 (2)

try:
    [오류가 발생할 수도 있는 코드]
except:
    [오류가 발생하면 실행할 코드]

 

 

만약 숫자가 아닌 문자를 입력했다면?

try:
    weight = input("weight:")
    weight = float(weight)
except:
    print("오류발생")

 

try:
    weight = input("weight:")
    weight = float(weight)
except ValueError:
    print("입력값 이상, 다시 입력하세요")
except:
    print("오류발생")

 

숫자 입력 제대로 받을 때 까지 무한반복! 

while True:
    try:
        weight = input("weight:")
        weight = float(weight)
        break # 제대로 입력 받았으면 멈추도록 
    except:
        print("오류발생")
print(weight)


# 오류가 발생하면 프로그램이 자동으로 종료된다. (if 문자를 입력하면?)
#  1. 오류가 발생한다면 별도로 처리를 해서 프로그램이 종료되지 않도록 한다.
#     - 오류처리구문 try-execpt
#  2. 오류가 생기지 않도록 처리를 추가한다. (다시 입력받기)
#     - 무한 반복문

 

 

# bmi 계산 프로그램을 작성하시오.
# weight, height를 입력받고
# bmi를 계산하여 출력하시오.
# 함수와 클래스 
while True:
    try:
        weight=input("weight:")
        weight=float(weight)
        break
    except:
        print("오류발생")
        
while True:
    try:
        height=input("height")
        height=float(height)
        break
    except:
        print("오류발생")

bmi=weight/((height/100)**2)
print(bmi)
    

==> bmi를 계산할 때 몸무게와 키를 얻어야 하는데 각 값에 문자가 들어간다면 다시 입력받도록(무한루프)함.

 

 

화면을 보면, 문자를 받았을 때에는 숫자를 입력받을 때 까지 계속해서 입력창을 띄우고 두 값 모두 제대로 받았다면 bmi 계산하여 결과출력

 

윤년 계산

위에는 윤년 변수에 수를 지정해놓은 것 

아래에는 datetime의 연도를 불러오도록 한 것

 

[로또 번호 추출 코드]

-> 너무 복잡해!!

numbers= list(range(1,46))

game=random.sample(numbers, 6)

-> 간단하게 45번까지 수 중에서 6개만 추출 가능 

    매번 수가 중복되는지 체크할 필요 없이 추출하도록! 

 

몇게임을 할지 입력받아서 그 수만큼 세트를 뽑아내자~

 

 

# list 

- list 만들기 

empty_list = list() 
empty_list = []
test_list = [1,2,3, "hi", 3.14, "hello"]

 

my_score = ['B+',"A","B","B","B+","A+"]

 

- list 삭제하기 

if 'A+' in my_score:

my_score.remove('A+') # A+값 지우기 / 없는 값은 안지워지고 오류가 발생한다.

my_score

 

# 그럼 값이 있는지 없는지 아는 방법도 있지 않을까?

# -> if 'A+' in my_score : A+이 my_score에 있다면 지워줘!

 

- list에 값 추가하기 

my_score.append('A0') 

  --> 뒤에 값 추가하기

my_score.insert(1,'D0')

  --> 1번째에 D0 추가하기 

* 리스트의 가장 첫번째는 0번째임.