[udemy] Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복을 통해 학습하고 있습니다.
Random Module
- 난수를 생성하는데 필요한 복잡한 수학을 사용하지 않아도 임의의 숫자를 쉽게 생성할 수 있도록 파이썬에서 만든 모듈
- 파이썬의 random module을 사용하면 무작위 정수를 생성할 수 있음.
- random document를 확인하면 무작위 정수를 생성하기 위해 사용할 수 있는 function들을 확인할 수 있음.
(https://docs.python.org/3/library/random.html)
- random.randint(a,b)는 a와 b사이의 무작위 정수를 생성할 수 있음.(a와 b는 숫자 범위를 정하기 위한 숫자들을 입력)
import random
random_integer = random.randint(1, 10)
print(random_integer)
→ random 모듈을 사용하기 위해 import를 하고, random.randint을 사용하여 1부터 10까지 숫자 중 한 가지 숫자를 랜덤하게 출력함.
- 해당 코드를 실행할 때마다 매번 다른 숫자라 출력되는 것을 확인할 수 있음.(1부터 10사이의 임의의 숫자)
- 무작위 소수점 숫자를 생성하기 위해서는 random.random()을 사용함.
- 해당 함수는 파이썬에서 무작위 숫자를 다룰 때 많이 사용하고, 0과 1사이의 무작위 부동 소수점 숫자를 생성함.
- 범위는 0.0 <= x < 1.0으로, 생성된 랜덤 숫자가 0보다 크거나 같음.
import random
random_num_0_to_1 = random.random()
print(random_num_0_to_1)
→ ()안에 값을 입력하지 않지만, 함수가 수행해야 할 작업을 실행하기 위해 ()가 필요함.
- 부동 소수점 난수 생성을 위해 random.uniform(a, b) 함수를 사용할 수 있음.
- 하한 보다 크거나 같고 상한보다 같거나 작은 함수를 출력함(a와 b사이의 숫자를 생성하며 a와 b를 포함).
import random
random_float = random.uniform(1, 10)
print(random_float)
→ 1과 10사이의 부동 소수점 난수를 출력하며, random과의 차이점은 10이 나올 수도 나오지 않을 수도 있음.
❓ Qusetion
Q1. Heads or Tails
Create a coin flip program using what you have learnt about randomisation in Python. It should randomly print "Heads" or "Tails" everytime it is run.
import random
random_integer = random.randint(0, 1)
# print(random_integer)
if random_integer == 0:
print("Heads")
else:
print("Tails")
→ 0과 1을 랜덤으로 출력해서 0이면 Heads를 1이면 Tails를 출력
Lists
- 리스트는 데이터 구조라고 부를 수 있으며, 어떤 데이터 타입이든(숫자와 문자열, 불리언 집합을 함께 저장 가능) 대괄호로 시작하여 반드시 대괄호로 닫아야함.
- 대괄호 사이의 항목들은 쉼표로 구분함.
test = ["apple", "cherry"]
- 리스트를 사용하여 관련된 여러 데이터를 저장할 수 있지만, 리스트에는 순서가 있음.
- 순서는 리스트 [] 안의 순서에 의해 결정되며 저장된 순서는 변경되지 않음. (ex. 첫 번째는 apple, 두 번째는 cherry가 됨)
states_of_america = ["Delaware", "Pennsylvania", "New Jersey", "Georgia", "Connecticut", "Massachusetts", "Maryland", "South Carolina", "New Hampshire", "Virginia", "New York", "North Carolina", "Rhode Island", "Vermont", "Kentucky", "Tennessee", "Ohio", "Louisiana", "Indiana", "Mississippi", "Illinois", "Alabama", "Maine", "Missouri", "Arkansas", "Michigan", "Florida", "Texas", "Iowa", "Wisconsin", "California", "Minnesota", "Oregon", "Kansas", "West Virginia", "Nevada", "Nebraska", "Colorado", "North Dakota", "South Dakota", "Montana", "Washington", "Idaho", "Wyoming", "Utah", "Oklahoma", "New Mexico", "Arizona", "Alaska", "Hawaii"]
print(states_of_america[0])
# 결과
Delaware
→ 미국의 주를 연방에 가입한 순서대로 리스트로 만듦.
- 처음 가입한 주를 확인하고 싶을 때 변수에 대괄호를 사용하여 리스트에서 꺼내고 싶은 데이터의 인덱스를 입력하면 됨.(처음 시작은 0)
※ 코드에 []가 있다면 리스트와 관련이 있을 수 있겠다고 생각해야함. (리스트를 만들 때와 꺼낼 때 모두 대괄호를 사용함)
- 만약 인덱스를 음수로 사용한다면, 리스트의 맨 뒤에서부터 출력됨.
states_of_america = ["Delaware", "Pennsylvania", "New Jersey", "Georgia", "Connecticut", "Massachusetts", "Maryland", "South Carolina", "New Hampshire", "Virginia", "New York", "North Carolina", "Rhode Island", "Vermont", "Kentucky", "Tennessee", "Ohio", "Louisiana", "Indiana", "Mississippi", "Illinois", "Alabama", "Maine", "Missouri", "Arkansas", "Michigan", "Florida", "Texas", "Iowa", "Wisconsin", "California", "Minnesota", "Oregon", "Kansas", "West Virginia", "Nevada", "Nebraska", "Colorado", "North Dakota", "South Dakota", "Montana", "Washington", "Idaho", "Wyoming", "Utah", "Oklahoma", "New Mexico", "Arizona", "Alaska", "Hawaii"]
states_of_america[1] = "pencilvania"
print(states_of_america[1])
# 결과
pencilvania
- 리스트의 내용을 바꾸고 싶다면 변수에 []를 사용하여 인덱스 n에 있는 항목을 가져온 뒤 새로 입력한 값과 같다고 설정 후 출력하면 변경된 값을 확일 할 수 있음.
- 만약 새로운 주가 미국에 가입하면, 하와이 다음 순서인데 이를 추가하고자 할 때 append() 함수를 사용할 수 있음.
- append 함수 뿐만 아니라 다양한 함수들을 list와 함께 사용할 수 있음.
(https://docs.python.org/3/tutorial/datastructures.html)
states_of_america = ["Delaware", "Pennsylvania", "New Jersey", "Georgia", "Connecticut", "Massachusetts", "Maryland", "South Carolina", "New Hampshire", "Virginia", "New York", "North Carolina", "Rhode Island", "Vermont", "Kentucky", "Tennessee", "Ohio", "Louisiana", "Indiana", "Mississippi", "Illinois", "Alabama", "Maine", "Missouri", "Arkansas", "Michigan", "Florida", "Texas", "Iowa", "Wisconsin", "California", "Minnesota", "Oregon", "Kansas", "West Virginia", "Nevada", "Nebraska", "Colorado", "North Dakota", "South Dakota", "Montana", "Washington", "Idaho", "Wyoming", "Utah", "Oklahoma", "New Mexico", "Arizona", "Alaska", "Hawaii"]
states_of_america.append("Angelaland")
print(states_of_america[-1])
# 결과
Angelaland
실습1: Banker Roulette
Figure out how to pick a random name from the list of friends.
import random
random_int = random.randint(0, 4)
friends = ["Alice", "Bob", "Charlie", "David", "Emanuel"]
print(friends[random_int])
→ 리스트는 0~4까지라 0부터 4까지 랜덤하게 숫자를 뽑아 친구의 이름을 출력하게 만듦.
* random.choice() 함수를 사용해 아래와 같이 코드를 만들 수도 있음.
import random
friends = ["Alice", "Bob", "Charlie", "David", "Emanuel"]
print(random.choice(friends))
IndexError
- 리스트를 사용할 때 자주 발생하는 에러 중 하나로, 실제 리스트의 인덱스는 0부터 시작하기 때문에 50개의 내용이 있어도 마지막은 49로 끝나게 됨.
- 근데 리스트 내용을 len()등으로 받아서 len의 값으로 리스트의 내용을 출력하려고 하면 Error가 발생됨.
- 그래서 이런 경우 -1을 하여 코드를 만들면 에러가 발생하지 않음.
states_of_america = ["Delaware", "Pennsylvania", "New Jersey", "Georgia", "Connecticut", "Massachusetts", "Maryland",
"South Carolina", "New Hampshire", "Virginia", "New York", "North Carolina", "Rhode Island",
"Vermont", "Kentucky", "Tennessee", "Ohio", "Louisiana", "Indiana", "Mississippi", "Illinois",
"Alabama", "Maine", "Missouri", "Arkansas", "Michigan", "Florida", "Texas", "Iowa", "Wisconsin",
"California", "Minnesota", "Oregon", "Kansas", "West Virginia", "Nevada", "Nebraska", "Colorado",
"North Dakota", "South Dakota", "Montana", "Washington", "Idaho", "Wyoming", "Utah", "Oklahoma",
"New Mexico", "Arizona", "Alaska", "Hawaii"]
num_of_states = len(states_of_america)
print(states_of_america[num_of_states])
# 결과
print(states_of_america[num_of_states])
IndexError: list index out of range
# 수정
states_of_america = ["Delaware", "Pennsylvania", "New Jersey", "Georgia", "Connecticut", "Massachusetts", "Maryland",
"South Carolina", "New Hampshire", "Virginia", "New York", "North Carolina", "Rhode Island",
"Vermont", "Kentucky", "Tennessee", "Ohio", "Louisiana", "Indiana", "Mississippi", "Illinois",
"Alabama", "Maine", "Missouri", "Arkansas", "Michigan", "Florida", "Texas", "Iowa", "Wisconsin",
"California", "Minnesota", "Oregon", "Kansas", "West Virginia", "Nevada", "Nebraska", "Colorado",
"North Dakota", "South Dakota", "Montana", "Washington", "Idaho", "Wyoming", "Utah", "Oklahoma",
"New Mexico", "Arizona", "Alaska", "Hawaii"]
num_of_states = len(states_of_america)
print(states_of_america[num_of_states - 1])
# 결과
Hawaii
중첩 리스트
- 각각의 변수로 만들어진 리스트를 하나의 중첩 리스트로 출력할 수 있음.
- 중첩 리스트를 출력하면 시작과 끝에 2개의 대괄호가 있는 것을 확인할 수 있는데, 하나의 큰 리스트 안에 2개의 리스트를 합쳤기 때문
fruits = ["Cherry", "Apple", "Pear"]
veg = ["Cucumber", "Kale", "Spinnach"]
dozen = [fruits, veg]
print(dozen)
# 결과
[['Cherry', 'Apple', 'Pear'], ['Cucumber', 'Kale', 'Spinnach']]
4일차 프로젝트
컴퓨터와 가위 바위 보 게임하기.
import random
rock = '''
_______
---' ____)
(_____)
(_____)
(____)
---.__(___)
'''
paper = '''
_______
---' ____)____
______)
_______)
_______)
---.__________)
'''
scissors = '''
_______
---' ____)____
______)
__________)
(____)
---.__(___)
'''
games = [rock, paper, scissors]
choose = int(input("What do you choose? Type 0 for Rock, 1 for Paper or 2 for Scissors.\n"))
print(games[choose])
compute_choose = random.randint(0, 2)
print("compute_choose:")
print(games[compute_choose])
if choose >= 3 or choose < 0:
print("You typed an invalid number. You lose!")
elif choose == compute_choose:
print("It's draw.")
elif compute_choose == 0 and choose == 2:
print("You lose!")
elif compute_choose > choose:
print("You lose!")
elif choose > compute_choose:
print("You Win!")
elif choose == 0 and compute_choose == 2:
print("You Win!")
p.s 아 이번 게임은 만드는데 조금 힘들었다...(난 바보야)
'Language > Python' 카테고리의 다른 글
[Section6] 파이썬 함수와 카렐 (0) | 2025.01.13 |
---|---|
[Section5] 파이썬 반복문 (0) | 2025.01.13 |
[Section3] 흐름 제어와 논리 연산자 (0) | 2025.01.10 |
[Section2] 데이터 형식 이해 및 문자열 (0) | 2025.01.09 |
[Section1] 파이썬 변수 사용 (0) | 2025.01.08 |