파이썬에서는 객체를 복사할 때, 2가지 방법으로 복사할 수 있습니다.

우리가 리스트와 같은 객체를 복사할 때, 단순히 리스트를 참조하는 변수만 하나 더 만든다면 이것은 얕은 복사가 됩니다. 아래 예제를 봅시다.
colors = ["red", "blue", "green"]
clone = colors
clone[0] = "white"
print(colors)
print(clone)
<실행 결과>
['white', 'blue', 'green']
['white', 'blue', 'green']

단순히 변수의 값만 복사되는 것은 얕은 복사(shallow copy)가 됩니다. "얕은" 이라는 의미는 객체 참조값이 복사되지만 객체는 복사되지 않는다는 것을 의미합니다.
만약 얕은 복사가 개발자가 원하는 것이 아니라면 깊은 복사를 할 수 있습니다. 가장 쉬운 방법이 copy 모듈의 deepcopy() 함수를 사용하는 것입니다.
import copy
colors = ["red", "blue", "green"]
clone = copy.deepcopy(colors)
clone[0] = "white"
print(colors)
print(clone)
<실행 결과>
['red', 'blue', 'green']
['white', 'blue', 'green']

키워드는 파이썬에서 if나 for처럼 예약되어 사용되는 단어입니다. 따라서 키워드로 함수나 변수 이름을 만들면 안 됩니다.
파이썬의 키워드에 대한 정보를 주는 모듈이 keyword 모듈입니다.
import keyword
name = input("변수 이름을 입력하세요 : ")
if keyword.iskeyword(name):
print(name, "은 예약어입니다.")
print("아래는 키워드의 전체 리스트입니다.")
print(keyword.kwlist)
else:
print(name, "은 사용할 수 있는 변수 이름입니다.")
<실행 결과>
변수 이름을 입력하세요 : for
for 은 예약어입니다.
아래는 키워드의 전체 리스트입니다.
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
random 모듈은 난수를 발생할 때 사용하는 모듈입니다. 난수는 다양한 용도로 사용됩니다. 예를 들어서 카드를 덱에서 뽑을 때도 사용하고 동전 던지기를 할 때도 이용합니다.
아니면 일회용 패스워드를 생성할 때나 웹사이트에서 사용자에게 랜덤하게 어떤 상품을 소개할 때도 사용됩니다. random 모듈에서는 난수를 발생하는 다양한 함수들이 지원됩니다.
import random
print(random.randint(1, 6))
print(random.randint(1, 6))
<실행 결과>
5
6
import random
print(random.random() * 100)
<실행 결과>
34.24701368192223
import random
myList = ["red", "green", "blue"]
print(random.choice(myList))
<실행 결과>
blue
import random
myList = [ [x] for x in range(10) ]
random.shuffle(myList)
print(myList)
<실행 결과>
[[8], [1], [6], [0], [4], [5], [3], [9], [2], [7]]
import random
for i in range(3):
print(random.randrange(0, 101, 3))
<실행 결과>
69
6
75
os 모듈은 파이썬이 실행되는 운영체제(Operating System)에 관계없이 운영체제의 기본적인 기능들을 다룰 수 있도록 해주는 모듈입니다.
예를 들어서 system() 함수는 운영체제 상에서 명령어를 실행하며 성공한 경우, 0을 반환합니다. 예를 들어서 파이썬 인터프리터에서 system("calc") 을 실행하면 계산기 프로그램이 실행됩니다.
import os
os.system("calc")
<실행 결과>

os.getcwd() 와 os.chdir(path) 같은 함수들은 현재 작업 디렉터리 위치를 변경하거나 가져올 때, 사용됩니다.
봉민이는 학창 시절 동전 던지기 게임으로 친구들과 돈 내기를 했던 추억이 있습니다.
어느 날 집에서 적적하게 자료구조 과제를 하던 봉민이는 심심함을 못 견디고 학창 시절 즐겁게 했던 동전 던지기 게임을 파이썬으로 작성해보고 싶어 졌습니다.
random 모듈을 사용하여 아래의 실행 결과가 나오도록 해봅시다.
<실행 결과>
동전 던지기를 계속 하시겠습니까? (y / n) : y
뒤
동전 던지기를 계속 하시겠습니까? (y / n) : y
뒤
동전 던지기를 계속 하시겠습니까? (y / n) : y
앞
동전 던지기를 계속 하시겠습니까? (y / n) : y
뒤
동전 던지기를 계속 하시겠습니까? (y / n) : y
앞
동전 던지기를 계속 하시겠습니까? (y / n) : y
앞
동전 던지기를 계속 하시겠습니까? (y / n) : n
종료