공부/파이썬 (2)

728x90
반응형

2일차다. 매일 10분이라고는 했는데 지금은 지문을 읽고 만들고 비교하는 방식으로 가고 있어서 안세기로 했다.

그치만 처음 문제가 너무 간단해서 오늘은 다음거 갔다.

그리고 막히는 부분 있으면 슬쩍 보거나 추가하고 싶은거 있으면 검색해서 코드가 좀 다르다.


이번에는 숫자 여러개를 매개변수로 받아 사용하는 방법에 대한 문제다.

요구사항은 아래와 같다.

 

  1. sum 함수 만들기
  2. 숫자를 여러개를 받아야 한다.

 

함수를 만들 때 매개변수에 *을 붙인다. 이것을 튜플이라고 부르는데 셀 수 있는 수량의 순서 있는 열거라고 한다.

간단하게 말해서 매개변수에 숫자 여러개를 가진다는 것이다.

 

파이썬의 for문은 C와 다르게 number 매개변수의 처음과 끝을 순차적으로 불러온다.

아무튼 그렇게 number 매개변수를 for문으로 하나씩 result 변수에 더해주고 return해주면 끝난다.

def sum(*number):
    result = 0
    for i in number:
        result += i
    return result

print(sum(1,2,3))


다음은 입력을 적절한 자료형으로 변환하여 처리하는 방법에 대한 문제다.

 

요구사항

  1. 10km를 뛰는데 걸린 시간을 입력받는다,
  2. 엔터키를 입력받으면 종료.
  3. 종료 시 걸린 시간의 평균을 출력한다.

 

파이썬은 입력받은게 숫자든 문자든 무조건 문자열로 취급한다. 입력받은것이 엔터이면 빈 문자열을 받았다는 소리다.

파이썬의 if는 빈 문자열과 0을 받으면 false로 변환된다. if not으로 엔터를 입력받았다는 것을 확인하고 반복문을 종료했다. 여기서 사용한 {변수 :.2f}는 f-문자열에서 소수점을 지정하는 방법으로 변수에 들어 있는 값을 소수점 둘째 자리(.2)까지 출력하겠다는 소리이다. 그리고 아무 숫자도 입력하지 엔터를 누르면 오류가 나길래 timesum이 0보다 클 때로 예외처리 했다.

 

평균을 구하기 위해 입력을 모두 합하고 받은만큼 나눠야하는데 앞서 말했듯 입력받은 것은 무조건 문자열로 취급되기 때문에 숫자로 쓰기 위해 형변환을 해줘야한다. 책에서는 float로 변환하라고 했지만 그걸 못봐서 int로 형변환 해버렸다. 아무튼 그렇게 총합에 더하고 횟수를 나눠서 출력했다.

 

그리고 숫자가 아닌 문자를 받으면 안되기 때문에 문자인지 숫자인지 확인하는 함수를 사용했다. isalpha는 해당 변수가 숫자인지 확인해주는 함수이고 elif는 else if다.

def stop_watch():
    timesum = 0
    timenum = 0

    while True:
        time = input('10km 걸린 시간 : ')

        if not time:
            if timesum > 0:
                print(f'{timenum}번을 달린 평균 : {timesum/timenum:.2f}')
            else:
                print('0번을 달린 평균 : 0')
            break
        elif time.isalpha():
            print('잘못 입력하였습니다')
        else:
            timesum += int(time)
            timenum += 1
        
stop_watch()

 

728x90
반응형

'공부 > 파이썬' 카테고리의 다른 글

파이썬 공부 1일차  (0) 2023.02.05
728x90
반응형

파이썬을 하기로 했다. 이유는 간단하다. 전에 사둔 매일 10분만 하면 된다는 책이 있기 때문이다.

파이썬을 해보긴 했다. 기초를 뛰어넘어서 바로 고급으로 뛴게 문제지..

그래서 아예 기초보다는 문법이랑 사용 위주로 공부하려고 한다.

근데 문제는 이거 10장까지 있다. 10분이면 언제 끝나는거지?

파이썬 3.6 기준으로 만들어진 책이라 3.6.8을 다운로드 했다.

IDE(통합 개발 환경)은 이미 컴퓨터에 있는 비주얼 스튜디오를 꺼냅니다~

 

https://www.python.org/downloads/release/python-368/

 

Python Release Python 3.6.8

The official home of the Python Programming Language

www.python.org

 

대충 이 책은 연습문제 위주로 파이썬에 익숙해지게 하는게 목적인거같다.

챕터 1은 숫자 맞추기 게임이다.

일단 파이썬 경험자가 본다는걸 전제로 한 책인거같다. 다짜고짜 문제부터 낸다. 알아서 풀라고.

아무튼 해법이 있어서 봤다. 어쩔수 없었다. 기억이 애매해..

 


이 프로그램의 요구사항은 아래와 같다.

 

  1. 0~100 까지의 숫자를 뽑는다.
  2. 사용자에게 숫자 입력을 받는다.
  3. 입력받은 숫자를 비교한다.
  4. 3의 결과가 맞으면 프로그램을 종료한다.
  5. 틀리다면 큰지 작은지 알려준다.
  6. 2-5의 과정을 반복한다.

 

def로 함수를 만들고 그 함수에 내용을 집어넣는 방식이다. 물론 함수를 안써도 출력되긴 한다.

상단에 쓸 함수를 선언해준다. 지금은 랜덤 숫자값을 받아야 하므로 random을 import 했다.

import random

 

그리고 내가 쓸 함수를 만든다.

이거는 책에서 추천해준 함수 이름인데 C와는 다르게 {}를 쓰지 않는다.

def guessing_game():

 

이어서 random 함수를 사용해서 0에서 100까지 랜덤으로 받는다.

또 C와 다르게 변수 타입을 지정하지 않고 사용할 수 있다.

    answer = random.randint(0,100)

 

핵심 코드를 작성할 차례이다. input 함수로 숫자를 받고 비교하는거다.

무한 반복문은 어디든 같다. while true 하나면 충분하다.

여기서 특이한게 있는데 print 함수의 맨 앞에 들어간 f 다.

이 f는 format의 f인데 {} 안의 변수를 출력해준다.

자세한 내용은 f-string을 검색해 보는것을 추천한다.

 

 

    while True:
        user_guess = int(input('숫자를 입력해주세요 : '))
        if user_guess == answer:
            print(f'정답! 숫자는 {user_guess}')
            break
        if user_guess < answer:
            print(f'{user_guess}보다 큽니다.')
            
        else:
            print(f'{user_guess}보다 작습니다.')

 

모든 함수 작성이 끝났으면 함수를 불러준다.

guessing_game()

 

[결과]

 

최근까지 유니티 하다가 파이썬을 잡으니까 혼란스럽다. 세미콜론도 그렇고 함수 쓰는게 달라.

728x90
반응형

'공부 > 파이썬' 카테고리의 다른 글

파이썬 2일차  (1) 2023.02.05
1