[python] 파이썬 수식과 랜덤 함수에 대해 알아보자

ING's Tec 기술블로그·2022년 2월 9일
0

python

목록 보기
4/4

안녕하세요 잉스테크 입니다!

이번에는 파이썬을 공부하면서 기록을 남기는 TIL 활동을 하면서 남겨보고자 합니다

처음 개발 환경 구축부터 차근차근 파이썬 프로젝트까지 과정을 담아보도록 하겠습니다

📌 참고 내용

공부하고 있는 자료는 구름 edu에 무료 파이썬 기본편 - 6시간 뒤면 나도 개발자를 공부하면서 스터디한 내용을 남긴 내용입니다.

🥵현재 벨로그 이미지 사이즈 조절 기능이 원활하게 지원하지 못해 이미지 크기가 큰점 양해 부탁드립니다

벌써 시작한 지 챕터 2를 마무리해가네요 진도는 개인적으로 빨리 빼고 있는데 업로드가 이래저래 늦어지고 있습니다 ㅜㅜ

빠르게 업로드하도록 노력하겠습니다

파이썬 수식에 대해 알아보자

이번에는 이전에 print(3+4) 이러한 수식을 다루었다면 이번에는 변수를 이용하여 수식을 처리해 볼까 합니다

먼저 이전에 포스팅을 보신 분은 아시겠지만

print(3+4) 

와 같이 바로 연산만 하였지 변수로 연산은 하지 않았습니다

c언어나 다른 언어로 하시던 분은 크게 어렵지 않으실 겁니다

본격적으로 시작해 보도록 하겠습니다

먼저 당연한 거지만 사칙연산부터 알아보겠습니다

print(2+3*4) # 14 

라는 결괏값이 나오게 됩니다

그 이유는 곱하기 먼저 더하기가 나중에 나오기 때문에 결괏값이 그렇게 나오는 것입니다

아래 우리가 원하는 결괏값 대로 나오게 하려면

print((2+3)*4) # 20 

과같이 괄호 안을 먼저 연산하고 괄호 밖을 나중에 연산함으로써

20이라는 결괏값이 나오는 것을 알 수 있습니다.

본격적으로 변수를 이용한 수식을 사용해 보자

이제 진짜로 시작해 보겠습니다

흔히 변수를 선언하여 변수를 사용하는 방식이죠

number = 2+3 *4 # 14 
print(number)

결괏값은 당연히 14가 나오게 됩니다 그 이유는 위 수식 내용에서 언급한 내용과 동일합니다 (결괏값 : 3번째)

여기서 다른 점은 number라는 변수를 선언하여 수식을 처리하여

print로 출력했다는 점이 다른 점이라고 할 수 있겠습니다

그럼 다른 수식도 한번 알아보도록 하겠습니다

number +=2 # 18 
# 이수식을 풀어서 쓰면 
number  = number +2 # 18

이번에는 흔히 대입 연산자라고 하죠 a + b = c 이렇게 하기가 귀찮으니 조금 더 줄여서 쓰는 방법입니다

근데 저도 여기서 정말 자주 헷갈리는 게 += 또는 *= 과같이 하게 되면

수식을 풀어쓰라고 하면 한 번씩 헷갈릴 때가 있기 마련입니다

제가 코드 창의 바로 아래에 적어놓긴 하였지만

number +=2 경우 위에서 이미 16이라는 결괏값이 있는 상태이고

거기서 number = number(14) + 2 상태이기 때문에

계산한 결괏값이 number 변수에 저장되어 최종적으로 18이라는 결과가 나오게 됩니다

위 사진처럼 결괏값을 확인할 수 있습니다

( 해당 걸과 값임이라고 표시되어 있는 부분이 걸과 값이라고 보시면 됩니다)

이외에도 아래 코드를 보시면

number /= 2  # number = number /2 
number -= 2  # number = number - 2 
number %=5  #  number = number % 5 

연산 결과와 동일하다고 알 수 있습니다

작성하는 김에 쓰는 str 과 int 형의 변환

형 변환이라고 하죠 흔히 자바에서는 이것을 타입캐스팅이라고 이야기합니다

본론으로 들어가서 아래 코드를 보게 되면

print(number + "test") 
 

와 같이 작성하게 되면

오류가 발생하게 됩니다

왜냐면 number는 type 이 int형 타입이고 "test"는 string 타입이기 때문이죠

두 개의 형자가 서로 다른데 당연히 컴파일 오류가 발생하게 됩니다

사진처럼 보시면 number /= 2는 int인데 문법 오류가 발생했음을 알 수 있습니다

str 과 int형이 둘 다 있다고 오류를 나타내고 있습니다

이럴 땐 하나의 형자로 통일해 주어야 합니다

그 방법은 생각보다 간단합니다

number = str(number) # 문자열로 형변환 
print(type(number))
print(number + "해당 결과값임") 

처럼 표시하면 컴파일 하게 되면 결괏값이 아래처럼 나오게 됩니다

타입 형태가 str 문자열로 형 변환된 것을 알 수 있고 아래 정상적으로 출력되는 것을 볼 수 있습니다

str -> int형으로 변환할 때도

number = int(number) 

와 같이 형 변환을 하면 됩니다.


랜덤 함수에 대해 알아보자

이번에는 랜덤 함수에 대해 알아보도록 하겠습니다

이 내용을 원래는 따로 분리해서 두개로 포스팅하려 했으나 너무 짧을 거 같아 한꺼번에 포스팅하고 있는데

생각보다 길어지는 거 같아 걱정이네요 ㅜㅜ

이왕 작성해 본 김에 마무리까지 해보도록 하겠습니다

먼저 random 함수도 앞에 math 라이브러리처럼 import를 해주어야 합니다

from random import * # random 에 관련된 모든 라이브러리를 import 하라는 의미입니다 

예시로 살펴보자면

print(random()) # 0.0 ~ 1.0 미만 임의의 값 생성 

print(random()*10) # 0.0 부터 10.0 미만의 값 까지 랜덤값 생성 

사진처럼 * 10을 하면 10자리까지 올라가면서 5까지 올라온 모습을 볼 수 있습니다

하지만 이렇게 난수 생성하는 것도 좋지만

우리가 원하는 건 이런 게 아닌 10의 자릿수를 원하는 거죠??

두 가지 방법이 있습니다

10의 자리수로 표현 하는 방법

  • 형 변환을 사용하는 방법
  • 좀 더 개선된 randrange, randint 함수를 사용하는 방법

두 가지 모두 한번 살펴보도록 하겠습니다

1. 먼저 소수점 () 이 보기 싫어서 형변환으로 처리해보자!

print(int(random()*10) # 1 ~ 10 미만 까지 

print(int(random()*10)+1) # 1 부터 10까지 표현 

이와 같이 하게 되면 결괏값은 아래 사진과 같이

소수점이 아닌 10진수 표현법으로 나오는 것을 알 수 있습니다

여기서 중요한 점은 미만의 값까지 표현하기 때문에 1부터 9까지만 표현이 가능하고 (첫 번째 코드)

두 번째 코드는 1부터 9까지였지만 +1 해줌으로써 = 10까지 표현이 가능한 것을 알 수 있습니다

2. 다음으로 함수를 통한 처리 방법을 알아보도록 하겠습니다

print(randrange(1,45)) # 1 ~ 46 미만의 값 생성 

여기서도 보면 이제 random() 해서 *45 하고 이러한 번거로움은 사라졌습니다

단순히 내가 (시작 숫자, 끝자리 숫자) 범위 지정만 해주면 알아서 결괏값이 나오는 건

좋습니다 하지만 이것도 미만이라서 +1 해주는 등 이런 건 보기에 좋지 않습니다

그러한 점을 개선한 함수가 또 있습니다

바로 randint인데요

print(randint(1,45)) # 1 ~ 45이하의 임의의 값을 생성 

과같이 출력하게 되면

우리가 원하는 걸과 값인 1 ~ 45까지의 랜덤 한 숫자가 표시되는 것을 확인할 수 있습니다

맨 마지막 결괏값 randint로 45가 출력되는 모습입니다.

오늘도 같이 공부하신다고 고생많으셨습니다! 

내일 힘차게 다시만나요~!! 
profile
풀스택 개발자를 꿈꾸는 잉스 입니다. IT,일상 내용은 : 네이버 블로그 잉스테크에서 , 기술 블로그는 : velog에서 운영 하고 있습니다.

0개의 댓글

관련 채용 정보