신년 연휴 이후 3일만에 3일차 강의가 진행되었습니다.
몇일 안했다고 연습했던 코랩 단축키도 가물가물 했는데 오늘도 연습했으니 내일은 더 좋아지겠죠?
아무생각 없이 2일차 작성했는데 블로그에 마크다운 언어로 작성할 수 있는 기능이?
오른쪽 목차기능도 활용 가능하니 마크다운으로 쓰는 연습도 함께 할 수 있게됐습니다.^^
이전 시간 복습
강의 시작 후 간단하게 input/output 복습을 진행했다. 대부분 간단하게 할 수 있었다.
배웠는지 안배웠는지 조차 헷갈리는게 하나 있었다.
두 단어를 입력받고, 공백을 기준으로 분리해서 각 변수에 할당하고 출력하는 문제
sentence_4 = input("2024년에는 ___ 달에 ___ 권의 책을 읽는다: ")
sentence_4_1, sentence_4_2 = sentence_4.split()
print(f"2024년에는 {sentence_4_1} 달에 {sentence_4_2} 권의 책을 읽는다.")
그외에는 end를 사용한 문장 합치기
# end를 사용해서 다른 두 문장을 합치기
print(f"올해는 {word1}와", end = " ")
print(f"{word2}에 집중하려고 한다.")
Random
파이썬에서 난수를 생성하기 위해 사용
1. 난수생성
randint(a, b)
: a 와 b 상이의 무작위 정수 생성 (b도 포함)randrange(start, stop[, step])
: 지정된 범위에서 무작위 정수 반환
start ~ stop -1 까지가 범위이고, step을 지정할 수 있다.random()
0 과 1 사이의 무작위 실수 반환
2. 시퀀스 내 무작위 선택
choice(sequence)
: 주어진 시퀀스(리스트, 튜플 등)에서 임의의 요소 선택shuffle(sequence)
: 주어진 시퀀스의 요소 순서를 무작위로 섞음sample(sequence, k)
: 주어진 시퀀스에서 k 개의 무작위 요소 선택randrange()
choice()
배운걸 이용해서 윷놀이 게임도 만들었는데 빽도 추가해서 올려본다
# 윳놀이 프로그램
import random
throw1 = random.choice([0,1])
throw2 = random.choice([0,1])
throw3 = random.choice([0,1])
throw4 = random.choice([0,1])
total_back = throw1 + throw2 + throw3 + throw4
results = ['모', '도', '개', '걸', '윷', '빽도']
if throw1 == 1 and throw2 == 0 and throw3 == 0 and throw4 == 0:
result = results[5]
else:
result = results[total_back]
print(f"이번 턴은 {result} 입니다.")
변수
어려운 것은 없었다.
x = 10
y = x
z = y
x = 20
print(x, y, z)
결과값은 20, 10, 10
x, y, z 변수가 같은 값을 가리키진 않는다
# id(x), id(y)에 대해서
# -5 ~ 256
x = 256
y = 256
print(x, y)
결과
256, 256
print(x == y) # 값 비교
print(x is y) # ID값 비교
결과
True
True
# -5 ~ 256
x = 257
y = 257
print(x, y)
결과
257, 257
print(x == y) # 값 비교
print(x is y) # ID값 비교
결과
True
False
print(id(x), id(y)) # ID값이 바뀐걸 확인할 수 있다.
정수형에서는 -5 ~ 256 까지는 괜찮은데 256이 넘어가면 메모리 위치도 변경되는거 같다.
이유는 잘 모르지만 효율성 때문이 아닐까 추측해본다.
무한대 inf
이런 것도 있나 싶은데 예전 기억 떠올려보면 무지 큰수랑 비교해서 무조건 True를 리턴하고 싶었던 적이 있었던거 같은데
구체적인 생각은 안나는데 그런걸 표현할 수 있었다.
x_inf = float("inf")
y_inf = float("_inf")
실수의 부동소수점 문제
컴퓨터의 연산은 정확하지 않고, 고려하여 코딩해야 한다.
IEEE754 표준이 10진수 숫자를 표현하는데 완벽하지 않다.
10.1 + 10.2
# 출력
20.299999999999997
0.1 + 0.2
# 출력
0.30000000000000004
프로그래밍 언어는 10진수를 컴파일 과정에서 2진수로 전환하여 계산하게 되는데 0.1, 0.2 는 무한소수가 된다.
메모리의 한계로 무한한 값을 저장할 수 없으니 적당한 소수점 위치에서 반올림하여 계산 종료한다.
python 프로그래밍 과정에서 정확한 값을 얻기 위해서라면
decimal 을 사용하여 좀 더 정확한 연산을 할 수 있다.
import decimal
float(decimal.Decimal('.1') + decimal.Decimal('.2')) # 출력: 0.3
나중에 계산할때 까먹지 않기를..
값 틀렸다고 코드에서 오류 찾는 바보짓 할거 같은 예감.
그 외 지수 표현, 복소수 표현 등을 배웠다.
그냥 배우다 보니 도대체 왜 이렇게 표현이 복잡한가 할수도 있을듯 싶은데
이런건 결국 실제 코드에서 필요한 순간을 만나야 비로소 깨닫게 되리라ㅋ
끝
'오름캠프(23.12.28 ~ 24.4.18)' 카테고리의 다른 글
오름캠프 학습일지(2024/01/08) - 3주차 1일 (1) | 2024.01.08 |
---|---|
오름캠프 학습일지(2024/01/03) - 2주차 4일 (1) | 2024.01.05 |
오름캠프 학습일지(2024/01/03) - 2주차 3일 (1) | 2024.01.04 |
오름캠프 학습일지(2024/01/03) - 2주차 2일 (0) | 2024.01.03 |
오름캠프 학습일지(2023/12/29) - 2일차 (2) | 2023.12.29 |