Below is a hangman game program that I wrote in python. 

# Program written by ailam\_7
# I'm a first year CS student studying at the University of Bath
# You can reach me at mah261@bath.ac.uk
# Enjoy the program :-)

import re
from random import randrange

# The ASCII art used here is taken from https://gist.github.com/chrishorton/8510732aa9a80a03c829b09f12e20d9c
stages = ['''
 +---+
 | |
 |
 |
 |
 |
=========''', '''
 +---+
 | |
 O |
 |
 |
 |
=========''', '''
 +---+
 | |
 O |
 | |
 |
 |
=========''', '''
 +---+
 | |
 O |
 /| |
 |
 |
=========''', '''
 +---+
 | |
 O |
 /|\ |
 |
 |
=========''', '''
 +---+
 | |
 O |
 /|\ |
 / |
 |
=========''', '''
 +---+
 | |
 O |
 /|\ |
 / \ |
 |
=========''']

# A catalogue of words that can be used
animals = ["baboon", "monkey", "snake", "octopus", "jellyfish", "donkey", "zebra", "elephant", "giraffe", "chicken",
 "aardvark", "alligator", "anaconda", "badger", "beaver", "buffalo", "butterfly", "camel", "cockroach",
 "coyote", "dolphin", "earthworm", "flamingo", "falcon", "grasshopper", "gorilla", "hamster", "hippopotamus",
 "angelfish", "horse"
 ]

elements = ["hydrogen", "helium", "lithium", "beryllium", "boron", "carbon", "nitrogen", "oxygen", "fluorine", "neon",
 "sodium", "magnesium", "aluminium", "silicon", "phosphorous", "sulfur", "chlorine", "argon", "potassium",
 "calcium", "scandium", "titanium", "vanadium", "chromium", "manganese", "iron", "cobalt", "nickel",
 "copper", "zinc",
 ]

fruits = ["apple", "orange", "banana", "lemon", "lime", "melon", "watermelon", "grape", "plum", "mango", "pineapple",
 "kiwi", "peach", "avocado", "coconut", "apricot", "blueberry", "blackberry", "strawberry", "raspberry",
 "cherry", "pear", "mandarin", "durian", "persimmon", "passionfruit", "dragonfruit", "papaya", "pomegranate",
 "grapefruit"
 ]

vegetables = ["potato", "carrot", "onion", "mushroom", "cabbage", "broccoli", "cauliflower", "leek", "garlic",
 "parsnip", "radish", "spinach", "lettuce", "corn", "bellpepper", "eggplant", "zucchini", "celery", "peas",
 "olive", "beetroot", "sprouts", "cucumber", "asparagus", "kale", "artichoke", "turnip", "brocolli",
 "asparagus", "cauliflower"
 ]

cities = ["paris", "london", "manchester", "edinburgh", "dublin", "tokyo", "beijing", "madrid", "barcelona",
 "reykjavik", "berlin", "turin", "rome", "lisbon", "moscow", "rio", "delhi", "mumbai", "bangkok", "dubai",
 "texas", "florida", "sydney", "shanghai", "munich", "cairo", "budapest", "prague", "copenhagen", "jakarta",
 ]

countries = ["maldives", "england", "france", "italy", "germany", "oman", "honduras", "argentina", "indonesia",
 "mauritius", "zambia", "comoros", "vietnam", "bangladesh", "canada", "morocco", "poland", "japan",
 "algeria", "nepal", "kazakhstan", "netherlands", "venezuela", "afghanistan", "laos", "hungary", "romania",
 "mozambique", "zimbabwe", "panama"
 ]

# A dictionary containing the categories
categories = {
 "animal": animals,
 "element": elements,
 "fruit": fruits,
 "vegetable": vegetables,
 "city": cities,
 "country": countries
}
# Return the length of the word filled with underscores
def encapsulate\_word(word):
 underscores = []
 for x in word:
 underscores.append("\_")
 return underscores
def print\_dashed\_line():
 print("")
 dashedLine = ["/"] \* 20
 print(\*dashedLine)
 print("")
# Main method of program
def main():
 # Randomly select a word from the list
 random1 = randrange(6) # For the category
 random2 = randrange(30) # For the word from that category
 hint = list(categories)[random1]
 word = list(categories.values())[random1][random2].upper()
 print(f"\nThe word to be guessed has {len(word)} letters!")
 print(f"Hint: {hint}\n")
 hiddenWord = encapsulate\_word(word)
 guesses = 7
 gameWon = False
 while guesses != 0:
 print\_dashed\_line()
 print(f"You have {guesses} guesses left!")
 print(f"Hint: {hint}")
 print(\*hiddenWord)
 print(stages[7 - guesses])
 guess = input("Enter your guess: ")
 guess = guess.upper() # Case sensitivity issues
 # First and foremost check if guess contains alphabets only
 if guess.isalpha():

 # Execute if guess is only a letter
 if len(guess) == 1:
 if guess in word:
 if word.count(guess) == 1:
 position = word.index(guess)
 hiddenWord[position] = guess
 print("Correct guess!")
 elif word.count(guess) > 1:
 indexes = [
 match.start() for match in re.finditer(guess, word)
 ]
 for index in indexes:
 hiddenWord[index] = guess
 # Quick check if all the letters in the word have been guessed
 if not "\_" in hiddenWord:
 gameWon = True
 break
 else:
 print("Sorry, that letter is not in the word!")
 guesses = guesses - 1

 # If user tries to directly guess the word
 if len(guess) > 1:
 if word == guess:
 gameWon = True
 break
 else:
 print("Sorry!, that is not the correct word!")
 guesses = guesses - 1
 else:
 print("Guess cannot contain non-alphabetical characters!")

 # Game ending states
 print\_dashed\_line()
 if gameWon:
 print("Congratulations! You guessed the correct word")
 print(f"The word was: {word}")
 else:
 print("Uh oh! Looks like you ran out of guesses")
 print(f"The correct word was {word}!")
 print("Better luck next time")
main()

Explain to me how it works. Save & SubmitCancel
아래는 제가 파이썬으로 작성한 교수형 집행 게임 프로그램입니다. # ailam\_7이 작성한 프로그램# 저는 바스 대학교에서 공부하는 CS학과 1학년 학생입니다.# mah261@bath.ac.uk 으로 연락주세요.# 프로그램을 즐겨주세요 :-)import re랜덤에서 랜덤 범위 가져 오기# 여기에 사용된 ASCII 아트는 https://gist.github.com/chrishorton/8510732aa9a80a03c829b09f12e20d9c 에서 가져온 것입니다.stages = [''' +---+ | | | | | |=========''', ''' +---+ | | O | | | |=========''', ''' +---+ | | O | | | | |=========''', ''' +---+ | | O | /| | | |=========''', ''' +---+ | | O | /|\ | | |=========''', ''' +---+ | | O | /|\ | / | |=========''', ''' +---+ | | O | /|\ | / \ | |=========''']# 사용할 수 있는 단어 목록animals = ["개코원숭이", "원숭이", "뱀", "문어", "해파리", "당나귀", "얼룩말", "코끼리", "기린", "닭", "땅돼지", "악어", "아나콘다", "오소리", "비버", "버팔로", "나비", "낙타", "바퀴벌레", "코요테", "돌고래", "지렁이", "플라밍고", "매", "메뚜기", "고릴라", "햄스터", "하마", "엔젤피쉬", "말" ]원소 = ["수소", "헬륨", "리튬", "베릴륨", "붕소", "탄소", "질소", "산소", "불소", "네온", "나트륨", "마그네슘", "알루미늄", "실리콘", "인", "황", "염소", "아르곤", "칼륨", "칼슘", "스칸듐", "티타늄", "바나듐", "크롬", "망간", "철", "코발트", "니켈", "구리", "아연", ]과일 = ["사과", "오렌지", "바나나", "레몬", "라임", "멜론", "수박", "포도", "자두", "망고", "파인애플", "키위", "복숭아", "아보카도", "코코넛", "살구", "블루베리", "블랙베리", "딸기", "라즈베리", "체리", "배", "만다린", "두리안", "감", "패션프루트", "용과", "파파야", "석류", "자몽" ]야채 = ["감자", "당근", "양파", "버섯", "양배추", "브로콜리", "콜리플라워", "부추", "마늘", "파스닙", "무", "시금치", "양상추", "옥수수", "피망", "가지", "호박", "셀러리", "완두콩", "올리브", "비트 뿌리", "콩나물", "오이", "아스파라거스", "케일", "아티 초크", "순무", "브로콜리", "아스파라거스", "콜리플라워" ]도시 = ["파리", "런던", "맨체스터", "에든버러", "더블린", "도쿄", "베이징", "마드리드", "바르셀로나", "레이캬비크", "베를린", "토리노", "로마", "리스본", "모스크바", "리오", "델리", "뭄바이", "방콕", "두바이", "텍사스", "플로리다", "시드니", "상하이", "뮌헨", "카이로", "부다페스트", "프라하", "코펜하겐", "자카르타", ]국가 = ["몰디브", "영국", "프랑스", "이탈리아", "독일", "오만", "온두라스", "아르헨티나", "인도네시아", "모리셔스", "잠비아", "코모로", "베트남", "방글라데시", "캐나다", "모로코", "폴란드", "일본", "알제리", "네팔", "카자흐스탄", "네덜란드", "베네수엘라", "아프가니스탄", "라오스", "헝가리", "루마니아", "모잠비크", "짐바브웨", "파나마" ]# 카테고리가 포함된 사전categories = { "animal": 동물, "element": 요소, "fruit": 과일, "vegetable": 채소, "city": 도시, "country": 국가}# 밑줄로 채워진 단어의 길이를 반환합니다.def encapsulate\_word(word): 밑줄 = [] 단어의 x에 대해 underscores.append("\_") 밑줄 반환def print\_dashed\_line(): print("") dashedLine = ["/"] \* 20 print(\*dashedLine) print("")# 프로그램의 메인 메서드def main(): # 목록에서 단어를 무작위로 선택합니다. random1 = randrange(6) # 카테고리의 경우 random2 = randrange(30) # 해당 카테고리에서 단어 선택 hint = list(categories)[random1] word = list(categories.values())[random1][random2].upper() print(f"\n맞출 단어에는 {len(word)} 글자가 있습니다!") print(f"힌트: {hint}\n") 숨겨진 단어 = encapsulate\_word(단어) guesses = 7 gameWon = False 동안 guesses != 0: print\_dashed\_line() print(f"{guesses} 추측이 남았습니다!") print(f"힌트: {hint}") print(\*hiddenWord) print(stages[7 - guesses]) guess = 입력("추측 입력: ") guess = guess.upper() # 대소문자 구분 문제 # 가장 먼저 guess에 알파벳만 포함되어 있는지 확인합니다. if guess.isalpha(): # guess가 문자로만 이루어진 경우 실행합니다. if len(guess) == 1: 단어로 추측하는 경우 if word.count(guess) == 1: position = word.index(guess) hiddenWord[position] = guess print("정답!") elif word.count(guess) > 1: indexes = [ match.start() for match in re.finditer(guess, word) ] 인덱스의 인덱스에 대해 hiddenWord[index] = guess # 단어의 모든 글자를 맞혔는지 빠르게 확인합니다. 숨겨진 단어에 "\_"가 없는 경우: gameWon = True break else: print("죄송합니다, 그 글자는 단어에 없습니다!") 추측 = 추측 - 1 # 사용자가 직접 단어를 맞히려는 경우 len(guess) > 1: if word == guess: gameWon = True break else: print("죄송합니다!, 정답이 아닙니다!") 추측 = 추측 - 1 else: print("추측에는 알파벳이 아닌 문자를 포함할 수 없습니다!") # 게임 종료 상태 print\_dashed\_line() if gameWon: print("축하합니다! 정답을 맞혔습니다!") print(f"단어는: {워드}였습니다.") else: print("어머!