본문 바로가기

Python85

[59]-A. 콘솔 게시판 import os # 게시판 fileName = "datas.txt" contents = [] cnt = 0 SIZE = 5 PAGE = 1 curPage = 1 startIdx = 0 endIdx = 4 run = True while run : datas = "" # 파일로드 if os.path.exists(fileName) : file = open(fileName, "rt") datas = file.read() file.close() info = datas.split('\n') cnt = int(info[0]) if cnt != 0: PAGE = cnt // SIZE if cnt % SIZE != 0 : PAGE += 1 if cnt = 0 and idx < cnt : sel2 = int(input(.. 2020. 9. 23.
[59] 콘솔 게시판 2020. 9. 23.
[58] 파일 쓰기/읽기 File Write & Read open() 함수 사용 . open(파일이름, 모드) . 파일이름 : string . 모드 : string ㄴ wt : 파일을 열고, 텍스트 쓰기 ㄴ rt : 파일을 열고, 텍스트 읽기 1. 쓰기 # 파일 저장(.txt) f = open("test.txt", "wt") f.write("Do not go gentle into that good night") f.close() 2. 읽기 os.path 모듈의 exists() 함수 사용 . exists(파일명) . 경로 : string # 파일 로드 import os if os.path.exists("test.txt") : f = open("test.txt", "rt") print(f.read()) 2020. 9. 23.
[57]-A. 영화관 예매 (함수) def run(): total = 0 seat = [0,0,0,0,0] while True: prt(seat) print("1)예매\n2)종료") sel = int(input("메뉴선택 : ")) if sel == 1: idx = int(input("예매할 좌석 선택 : ")) if seat[idx] == 0 : seat[idx] = 1 print("예매완료") else : print("이미 선택된 좌석입니다.") elif sel == 2: total = cal(seat) print("정산금액 : %d원" % total) break def prt(datas): print("--------- C G V ---------") for i in range(len(datas)): if datas[i] != 0: .. 2020. 8. 28.
[57] 영화관 예매 (함수) 실습예제 : 함수 → 영화관 좌석예매 . 사용자로부터 좌석번호(index)를 입력받아 예매하는 시스템이다. . 예매가 완료되면 해당 좌석 값을 1로 변경한다. . 이미 예매가 완료된 좌석은 재구매할 수 없다. . 한 좌석당 예매 가격은 12000원이다. . 프로그램 종료 후, 해당 영화관의 총 매출액을 출력한다. 2020. 8. 28.
[56] 딕셔너리 Dictionary 1. 인덱스(key)를 직접 설정할 수 있다. 2. { } 중괄호로 표현함. 3. : 콜론을 중심으로 key와 value를 정함. . 선언 변수명 = { } . 추가 변수명[추가할인덱스] = 값 . 삭제 del 변수명[삭제할인덱스] # 사용 # {key : value} info = {"name" : '홍희동'} print(info) print(info["name"]) # 추가 info["age"] = 2 print(info) print(info["age"]) info["like"] = ['피아노','영화','자전거','그림','수학','커피'] print(info) print(info["like"]) print(info["like"][2]) # 삭제 del info["like"][0].. 2020. 8. 25.
[55] 연습문제 : 함수 nums = [10, 20, 30, 40, 50] # 문제 1) 전체 합을 리턴해주는 함수 # 문제 2) 4의 배수의 합을 리턴해주는 함수 # 문제 3) 4의 배수만 리스트 타입으로 리턴해주는 함수 더보기 import random # 문제 1) score 리스트에 1~100사이의 랜덤 값 5개를 저장해주는 함수 # 설계 1) def random_score() : temp = [] for i in range(5) : r = random.randint(1,100) temp.append(r) return temp score = random_score() print(score) # 문제 2) 성적이 60점 이상이면 합격. # 합격생들의 방번호(index)와 성적을 리턴해주는 함수 # [ [인덱스, 성적]] # .. 2020. 8. 4.
[54] 함수의 정의 함수의 정의 1) 정의 (defined) ㄴ def 함수명(): return 2) 사용 ㄴ 함수명() 3) 종류 ㄴ def func1(): return ㄴ def func2(p): return ㄴ def func3(): return variable ㄴ def func4(p): return variable 2020. 8. 4.
[53] 함수 함수의 종류 1) 내장 함수(built-in) ㄴ len(), print(), append(), ... 2) 사용자 정의 함수 ㄴ 키워드 함수명() : return 3) 함수사용 목적 ㄴ 파일을 분할해서 원활하게 프로그래밍 할 수 있다. ㄴ 반복되는 코드를 함수를 통해 재활용 할 수 있다. 2020. 8. 4.
[52]-A. 단어 맞추기 import random words = ["java", "mysql", "jsp", "spring", "python"] # shuffle n = 0 while n < 100: r = random.randint(0,4) temp = words[0] words[0] = words[r] words[r] = temp n += 1 # run i = 0 while True: r = random.randint(0,len(words[i])-1) # Quiz print(end="[ ") for j in range(len(words[i])): if j == r: print(end="*") else: print(words[i][j], end="") print(" ]") my_answer = input("입력: ") # ch.. 2020. 7. 29.
[52] 단어 맞추기 실습예제 : 문자열 & 리스트 → 단어 맞추기 게임 words = ["java", "mysql", "jsp", "spring", "python"] . 셔플 . 문제가 인덱스 순서대로 출력된다 (키워드의 랜덤인덱스 *블라인드) . 사용자 입력을 받아 . 문제와 비교 후, . 일치하면 정답 -> 다음문제 . 일치안하면 땡 -> 유지(같은문제 출제) # 예) # 문제 : mys*l # 입력 : mysql 2020. 7. 29.
[51]-A. 끝말잇기 게임 import random words = ['사과', '강아지', '그림자', '복권', '구름'] start = words[random.randint(0,4)] turn = 0 print("--- 끝말잇기 ---") print(start, " ->") run = True while run: new = "" if turn % 2 == 0: new = input("p1: ") elif turn % 2 == 1: new = input("p2: ") # check if start[len(start)-1] != new[0]: if turn % 2 == 0: print("P2가 이겼다.") else: print("P1이 이겼다.") print("GAME OVER!") break else: start = new tu.. 2020. 7. 29.
[51] 끝말잇기 게임 실습예제 : 문자열 → 끝말잇기 게임 . 플레이어 두 명이 번갈아가며 끝말잇기를 진행한다. (단어길이 제한없음) . 제시어는 5개중에 랜덤 1개 출력 ['사과', '강아지', '그림자', '복권', '구름'] . 끝말이 일치하지 않는 경우, 게임은 종료 . 승자를 출력 2020. 7. 29.
[50] 문자열 : split() 분할함수 split() ㄴ 분할함수를 사용하여, 문자열 안에 있는 특정문자를 기준으로 분할할 수 있다. scores = "88,90,70,54,100" print(scores.split(',')) # 리스트 시퀀스로 분할 정렬됨 ['88', '90', '70', '54', '100'] ##datas = [ ] ##datas.append(scores.split(',')) ##datas.extend(scores.split(',')) ##print(datas) 연습문제 1 data = "박소리,97/안새롬,100/유철민,24" # 문제 1) data의 문자열을 잘라내서 # names와 scores 리스트에 알맞은 데이터를 저장하시오. names = ["", "", ""] scores = [0, 0, 0] 더보기 # 1.. 2020. 7. 29.
[49] 연습문제 : 문자열 연습문제 # 문제1) 문자열 hello를 olleh로 출력 text = "hello" # 문제2) 남성인지 여성인지 판단 jumin = "870612-1012940" 더보기 # 문제1) 문자열 hello를 olleh로 출력 text = "hello" for i in range(len(text)-1,-1,-1): print(text[i], end="") print() # 문제2) 남성인지 여성인지 판단 jumin = "870612-1012940" key = int(jumin[7]) if key == 1 or key == 3 or key == 5: print("남성입니다.") elif key == 2 or key == 4 or key == 6: print("여성입니다.") 2020. 7. 29.
[48] 문자열 : 슬라이싱 슬라이싱 Slicing ㄴ 변수명[start : end] ㄴ end 숫자는 포함하지 않음 (range()함수와 같은 범위설정) dylan = 'Do not go gentle into that good night' print(len(dylan)) print(dylan[36]) print(dylan[0:16]) 2020. 7. 29.
[47] 문자열 : 인덱싱 인덱싱 indexing ㄴ 문자열은 0부터 시작하는 index가 있다. arr = ['고','문','영'] size = len(arr) print("size = ", size) for i in range(size): print(arr[i]) name = "고문영" size = len(name) print("size = ", size) print(name) for i in range(size): print(name[i]) 2020. 7. 29.
[46] 문자열 : 형변환 함수 활용 1) str() : 숫자 → 문자열 2) int() : 문자열 → 숫자 # str() : 문자열로 변환(연산불가) memberCode = 1002 memberCode += 1 print(memberCode) data = str(memberCode) ##data += 1 # TypeError ##print(data) # int() : 정수형으로 변환(연산가능) num = int(data) num += 1 print(num) 2020. 7. 29.
[45] 문자열 기본 문자열의 사용 ㄴ ' ' 홑따옴표 및 " " 쌍따옴표 모두 사용 가능 ㄴ 따옴표 안에 문자열을 입력한다 ㄴ *곱하기 또는 +더하기 연산사용 가능 name = "홍길동" print(name) name = '홍둘리' print(name) name = "'도우너'" print(name) name = '"홍희동"' print(name) # *곱하기 연산의 활용 print(name * 5) # +더하기 연산의 활용 first = "홍" last = "또치" print(first + last) 2020. 7. 29.
[44]-A. 사다리 게임 import random ladder =[ [0, 0, 0, 0, 0], [1, 1, 0, 1, 1], [0, 1, 1, 0, 0], [0, 0, 1, 1, 0], [1, 1, 0, 0, 0], [0, 1, 1, 0, 0], [1, 1, 0, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0] ] while True: # reset ladder[0] = [0]*5 ladder[len(ladder)-1] = [0]*5 STONE = 7 x = random.randint(0,4) y = 0 ladder[y][x] = STONE # print1 print("S A D A R I !") for yy in range(len(ladder)): for xx in range(len(ladder[yy.. 2020. 7. 24.
[44] 사다리 게임 실습예제 : 다차원 리스트 → 사다리 게임 . 사다리 출력 . 랜덤 인덱스에서 출발 . 0을 만나면 아래로 내려감 . 1을 만나면 좌우검사 후, 1 값이 있는 방향으로 이동 . 결과 출력 ladder =[ [0, 0, 0, 0, 0], [1, 1, 0, 1, 1], [0, 1, 1, 0, 0], [0, 0, 1, 1, 0], [1, 1, 0, 0, 0], [0, 1, 1, 0, 0], [1, 1, 0, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0] ] x = 0 y = 0 . 특수기호 활용 ━ ┃ ┏ ┓ ┛ ┗ ┣ ┳ ┫ # . 완성된 수강생은 Develope # . 사다리를 랜덤으로 출력 (고정된 사다리 X) ladder = [[0]*5 for yy in range(9)] 2020. 7. 24.
[43]-A. 승강기 제어시스템 abs() : 절대값을 반환해주는 함수 import random # set EV BOX = 7 ev = [[0]*15 for i in range(3)] no = ["EV1004","EV1005","EV1006"] on = [0,0,0] for i in range(len(ev)): r = random.randint(0,len(ev[0])-1) ev[i][r] = BOX # set Me me = [0]*len(ev[0]) now = random.randint(0,len(ev[0])-1) # run while True: # update Me me[now] = 1 # print1 print("------- The Grand Budapest Hotel --------") for y in range(len(ev)).. 2020. 7. 24.
[43] 승강기 제어시스템 실습예제 : 다차원 배열 → 승강기 제어 시스템 . 15층 호텔 건물 A6 구역에서 . 3대의 승강기가 운행중이다. (EV1004, EV1005, EV1006) . 현재(랜덤)층에서 상향 혹은 하향 버튼을 누르면 . 이동층수가 가장 짧은 승강기가 움직인다.(Off -> On) . 각 승강기의 현재(랜덤)층 출력과 함께 . 사용자의 현재 층수 출력 후, . 메뉴 출력 : 1)위로 2)아래로 . 움직이는 승강기의 코드를 출력 . 예외처리 # . 완성된 수강생은 Develope # . 이동할 층수를 입력 받아 -> 이동 # . 선택된 승강기를 제외한 나머지는 랜덤 무브 2020. 7. 24.
[42]-A. 캐릭터 이동 import random game = [0]*7 MONSTER = 3 idx = random.randint(0,6) while True: game[idx] = MONSTER print("M O V E M O V E") for i in range(7): if game[i] == MONSTER: print(end="옷") else: print(end="__") print("\n") dir = int(input("1) 왼쪽 2) 오른쪽 : ")) if dir == 1: if idx == 0 : print("더 이상 갈 수 없습니다.") else: game[idx] = 0 idx -= 1 elif dir == 2: if idx == 6 : print("더 이상 갈 수 없습니다.") else: game[idx] .. 2020. 7. 24.
[42] 캐릭터 이동 실습예제 : 1차원 리스트 -> 캐릭터 이동 . 시작 시, 캐릭터를 랜덤으로 위치시킨다. . 이동할 방향을 입력받아 움직인다. (예외처리) 1) 왼쪽 2) 오른쪽 . 캐릭터는 기호로 출력 1) 0 0 0 3 0 0 0 2) _ _ _ ★ _ _ _ . 무한루프 _ _ _ ★ _ _ _ _ _ _ _ ★ _ _ _ _ _ _ _ ★ _ _ _ _ _ _ _★ _ _ _ _ _ ★ _ ... game = [0]*7 MONSTER = 3 2020. 7. 24.
[41] 연습문제 : 2차원 리스트 연습문제 # 관리비 apt = [ [101, 102, 103], [201, 202, 203], [301, 302, 303] ] pay = [ [1000, 2100, 1300], [4100, 2000, 1000], [3000, 1600, 800] ] # 문제 1) 각층별 관리비 합 출력 # 정답 1) 4400, 7100, 5400 # 문제 2) 호를 입력하면 관리비 출력 # 예 2) 입력 : 202관리비 출력 : 2000 # 문제 3) 관리비가 가장 많이 나온 집, 적게 나온 집 출력 # 정답 3) 가장 많이 나온 집(201), 가장 적게 나온 집(303) # 문제 4) 호 2개를 입력하면 관리비 교체 더보기 # 문제 1) 각층별 관리비 합 출력 # 정답 1) 4400, 7100, 5400 tot = [0.. 2020. 7. 24.
[40] 다차원 리스트 다차원 리스트 . 리스트는 리스트를 담을 수 있다. . 선언 및 초기화 listname = [ [0] * N1 for in range(N2) ] nums = [[1, 2, 3],[4, 5, 6],[7, 8, 9]] for i in range(len(nums)): # 2차원 반복문 활용 for j in range(len(nums[i])): print(nums[i][j], end=" ") print() # 선언 및 초기화 # 3행 2열 (2차원 리스트) num = [[0] * 2 for i in range(3)] print(num) # [[0, 0], [0, 0], [0, 0]] # 맵 그리기 : 2차원 # 4행 5열 (2차원 리스트) map = [[0]*5 for i in range(4)] # 값의 초기화.. 2020. 7. 23.
[39] 리스트 함수 리스트(List) 함수 . 리스트는 크기가 정해지지 않음 . 얼마든지 값의 추가/삭제/수정 가능 . 불변 시퀀스 '튜플'에는 존재하지 않는 기능(함수) 1) 추가 : listname.append() 2) 삭제 (index) : del listname[index] 3) 삭제 (value) : listname.remove(value) 4) 삽입 : listname.insert(index, value) 5) 길이 : len(listname) nums = [ ] # square brackets[ ] 대괄호 #nums[0] = 10 # IndexError # 1. 추가 : append() nums.append(10) nums.append(20) nums.append(30) nums.append(40) nums.a.. 2020. 7. 23.
[38]-A. 리스트 컨트롤러 # 리스트 컨트롤러[2단계] # 1. 추가 # . 값을 입력받아 순차적으로 추가 # 2. 삭제(인덱스) # . 인덱스를 입력받아 해당 위치의 값 삭제 # 3. 삭제(값) # . 값을 입력받아 삭제 # . 없는 값 입력 시 예외처리 # 4. 삽입 # . 인덱스와 값을 입력받아 삽입 # 삭제 시, 주의 : 재정렬 # . [10, 20, 0, 40, 50] -> X # . [10, 20, 40, 50, 0] -> O datas = [0, 0, 0, 0, 0] cnt = 0 while True: print("--- Controller ---") # print for i in range(5): print("[%d]" % i, datas[i]) print("------------------") print("1) 추.. 2020. 7. 23.
[38] 리스트 컨트롤러 실습예제 : 리스트 → 리스트 컨트롤러 만들기 1. 추가 . 값을 입력받아 순차적으로 추가 2. 삭제(인덱스) . 인덱스를 입력받아 해당 위치의 값 삭제 3. 삭제(값) . 값을 입력받아 삭제 . 없는 값 입력 시 예외처리 4. 삽입 . 인덱스와 값을 입력받아 삽입 삭제 시, 주의 : 재정렬 . [10, 20, 0, 40, 50] -> X . [10, 20, 40, 50, 0] -> O datas = [0, 0, 0, 0, 0] cnt = 0 2020. 7. 23.