본문 바로가기
WIL

2주차 WIL

by dev_junseok 2022. 9. 12.

이번주는 python 기초문법과 Git 의 기초를 다지는 공부를 하였다.

 

일단 python이란 프로그래밍 언어의 한 종류이다.

 

먼저 프로그래밍 언어는 컴파일러 언어, 인터프리터 언어로 나뉜다.

 

컴파일러 언어는 사람이 작성한 언어를 컴파일러가 처리하여 컴퓨터가 읽을수 있게 하는 언어이고 대표적으로 C, C++이 있다.

 

인터프리터 언어는 인터프리터가 컴파일을 처리하고 컴파일러와 다른 점은, 코드를 한 줄 씩 해석하고 실행한다는 점이고 대표적으로는 python,Ruby,JavaScript,SQL 등이 있다.( 프로그래밍 언어 중 70%는 인터프리터 언어)

 

인터프리터 언어의 장점은 프로그램 수정이 간단하다는 것이고 단점에는 실행 속도가 느리다는 점이 대표적이다.

 

파이썬의 기초를 배우고 바로 기본적인 계산기를 만드는 코드를 만들어보았다.

from func import add_func, subtract_func, multiply_func, divide_func

print("연산하고 싶은 숫자를 한 줄에 한개씩 총 두 줄, 마지막줄엔 연산자(+,-,*,/) 입력해주세요")

num1 = int(input())
num2 = int(input())
operator = input()


if operator == '+':
     add_func(num1,num2)
elif operator == '-':
    subtract_func(num1,num2)
elif operator == '*':
    multiply_func(num1,num2)
elif operator == '/':
    divide_func(num1,num2)
else:
    print('잘못 입력하셨습니다')
    
 #main.py

메인 코드이다.

def add_func(num1, num2):
    print(num1 + num2)
    
def subtract_func(num1, num2):
    print(num1 - num2) 

def multiply_func(num1, num2):
    print(num1 * num2)
    
def divide_func(num1, num2):
    print(num1 / num2)
    
#func.py

함수 코드를 따로 작성해서 메인 코드에서 import 하여 사용하였다.

 

다음은 반복문을 사용하여 간단한 숫자야구 게임을 만들어보았다.

 

반복문은 크게 while문 혹은 for문으로 나뉘어진다.

 

자주 사용되는 모듈은 type(), split(), join(), replace(), pprint(), random, time, datetime 등이 있다.

 

# 난수 생성, 임의의 번호 생성 등 랜덤한 동작이 필요할 때 사용된다.
import random

numbers = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(numbers) # numbers를 무작위하게 섞기
print(numbers) # [2, 8, 6, 4, 3, 7, 1, 5]

random_number = random.randint(1, 10) # 1 ~ 10 사이의 무작위 번호 생성

random라이브러리를 import하여 랜덤으로 숫자를 뽑는 기능이다.

# 함수의 실행 시간을 측정하는 등 시간을 다룰 때 사용되는 모듈이다.
import time

start_time = time.time() # 현재 시간 저장

time.sleep(1) # 1초간 대기

end_time = time.time()

# 코드가 종료된 시간 - 코드가 시작된 시간으로 실행 시간 구하기 (단위 : 초)
print(f"코드 실행 시간 : {end_time-start_time:.5f}") # 코드 실행 시간 : 1.00100

다음은 프로그램 시작 시간부터 프로그램이 종료되는 시간까지 시간을 측정해주는 time 모듈이다.

from random import randint
from datetime import datetime
import time



print("게임의 자리수를 설정합니다")
n = int(input()) #자리수 설정


# 랜덤하게 입력되는 3자리수
numbers = []
print("0과 9 사이의 서로 다른 숫자를 설정한 자리수 만큼 랜덤한 순서로 뽑았습니다.")
while len(numbers) < n:
    new_numbers = randint(0,9)
    if new_numbers in numbers:
        new_numbers = randint(0, 9)
    numbers.append(new_numbers)
    print(numbers)

# 사용자가 값을 정확하게 맞출때까지 무한반복
start = time.time()
count = 0
while True:

    # 사용자가 입력하는 3자리수
   
    user = []
    print("숫자를 하나씩 차례대로 입력하세요.")
    while len(user) < n:
        # try:
            user_input = input()
            if user_input == "exit":
                print("프로그램을 종료합니다")
                quit()
    
            user_numbers = int(user_input)
               
            if user_numbers in user:
                print("중복되는 수 입니다. 다시 입력해주세요.")
            elif user_numbers > 9:
                print("범위를 벗어나는 수입니다.다시 입력해주세요.")
            user.append(user_numbers)
            print(user)
              
    i = 0
    s = 0
    b = 0
    o = 0
    while i < len(numbers):
        if numbers[i] == user[i]:
            s = s + 1
        elif user[i] in numbers:
            b = b + 1
        else:
            o = o + 1
        i += 1
    print("%d Strike %d Ball %d Out \n" % (s, b, o))
    count += 1
    if s == n:
        print("축하합니다. %d번만에 세 숫자의 갑과 위치를 모두 맞추셨습니다." % count)
        break
end = time.time()

print(f"게임 시작 후 걸린 시간: {end-start:.2f} 초")
print( f"게임 종료 시간: {datetime.now()}")

전체 코드이다.

 

잘 작동한다.

 

정말 프로그래밍 언어를 배운다는 것은 끝이 없는것 같다. 앞으로도 힘내서 열심히 배워야겠다 :)

'WIL' 카테고리의 다른 글

6주차 WIL (장고 CRUD)  (0) 2022.10.10
5주차 WIL  (0) 2022.10.03
4주차 WIL  (0) 2022.09.26
3주차 WIL  (0) 2022.09.18
1주차 WIL  (1) 2022.09.04