├── Chapter16 ├── file_16_1_2b.py ├── file_16_1_2a.py └── file_16_1_1.py ├── Chapter25 ├── file_25_1d.py ├── file_25_1e.py ├── file_25_1a.py ├── file_25_1b.py ├── file_25_1c.py ├── file_25_1f.py ├── file_25_1_5.py ├── file_25_1_4.py └── file_25_2_5.py ├── Chapter24 ├── file_24_1.py ├── file_24_2.py ├── file_24_3.py ├── file_24_1_6.py ├── file_24_1_9.py ├── file_24_1_5.py ├── file_24_2_6.py ├── file_24_1_7.py ├── file_24_1_8.py ├── file_24_2_5a.py ├── file_24_2_5b.py └── file_24_2_5c.py ├── 연습문제_해답.pdf ├── Chapter11 ├── file_11_2g.py ├── file_11_2c.py ├── file_11_2h.py ├── file_11_2n.py ├── file_11_2o.py ├── file_11_2b.py ├── file_11_2l.py ├── file_11_2_2.py ├── file_11_2m.py ├── file_11_2a.py ├── file_11_2j.py ├── file_11_2i.py ├── file_11_2e.py ├── file_11_2f.py ├── file_11_2_1b.py ├── file_11_2d.py ├── file_11_2_1a.py └── file_11_2k.py ├── Chapter27 ├── file_27_7_1a.py ├── file_27_7_2a.py ├── file_27_8_1b.py ├── file_27_8_2b.py ├── file_27_8_3b.py ├── file_27_7_2b.py ├── file_27_8_3a.py ├── file_27_8_1a.py ├── file_27_8_2a.py ├── file_27_7_3a.py ├── file_27_7_1b.py ├── file_27_8_5b.py ├── file_27_13.py ├── file_27_4c.py ├── file_27_8_5a.py ├── file_27_7_3b.py ├── file_27_7_3c.py ├── file_27_4a.py └── file_27_4b.py ├── Chapter29 ├── file_29_1_1b.py ├── file_29_1_2b.py ├── file_29_1_2a.py ├── file_29_1_1a.py ├── file_29_1_4.py ├── file_29_1_3b.py ├── file_29_1_3a.py ├── file_29_1_12.py ├── file_29_6_2.py ├── file_29_4_2.py ├── file_29_5b.py ├── file_29_6_1b.py ├── file_29_6_1a.py ├── file_29_2_2a.py ├── file_29_2_1d.py ├── file_29_2_2c.py ├── file_29_4_4b.py ├── file_29_1_11.py ├── file_29_4_4a.py ├── file_29_1_9.py ├── file_29_4_3a.py ├── file_29_5a.py ├── file_29_1_8.py ├── file_29_2_2b.py ├── file_29_2_1b.py ├── file_29_1_5.py ├── file_29_4_5a.py ├── file_29_1_10.py ├── file_29_2_1c.py ├── file_29_3_1.py ├── file_29_4_5b.py ├── file_29_2_1a.py ├── file_29_1_6.py ├── file_29_4_5c.py ├── file_29_1_7.py ├── file_29_6_4d.py ├── file_29_3_2.py ├── file_29_4_3b.py ├── file_29_4_8.py ├── file_29_3_4.py ├── file_29_5_3.py ├── file_29_4_6.py ├── file_29_5_1.py ├── file_29_4_9.py ├── file_29_3_3.py ├── file_29_6_4c.py ├── file_29_6_3b.py ├── file_29_6_3a.py ├── file_29_4_7.py ├── file_29_4_1.py ├── file_29_6_4b.py ├── file_29_5_2.py └── file_29_6_4a.py ├── Chapter26 ├── file_26_1.py └── file_26_1_1.py ├── Chapter10 ├── file_10_1.py ├── file_10_1_2a.py ├── file_10_1_5.py ├── file_10_1_2b.py ├── file_10_1_4.py ├── file_10_1_1.py ├── file_10_1_3.py ├── file_10_1_6.py ├── file_10_1_7.py └── file_10_1_8.py ├── Chapter14 ├── file_14_2b.py ├── file_14_3_1c.py ├── file_14_4e.py ├── file_14_4f.py ├── file_14_4j.py ├── file_14_4k.py ├── file_14_3_1a.py ├── file_14_4a.py ├── file_14_4d.py ├── file_14_3_1b.py ├── file_14_4_b.py ├── file_14_2a.py ├── file_14_4b.py ├── file_14_4h.py ├── file_14_4c.py ├── file_14_4g.py ├── file_14_2_1.py ├── file_14_2c.py ├── file_14_3b.py ├── file_14_4_2.py ├── file_14_3a.py ├── file_14_4i.py ├── file_14_4_a.py ├── file_14_4_1.py ├── file_14_4_3a.py └── file_14_4_3b.py ├── Chapter17 ├── file_17_1_3c.py ├── file_17_1_4.py ├── file_17_1_3b.py ├── file_17_1_3a.py ├── file_17_1_2.py └── file_17_1_5.py ├── Chapter09 ├── file_9_2.py ├── file_9_4a.py └── file_9_4b.py ├── Chapter19 ├── file_19_1_2b.py ├── file_19_1_2a.py ├── file_19_1_1.py └── file_19_1.py ├── Chapter37 ├── file_37_2a.py ├── file_37_4_2.py ├── file_37_2b.py ├── file_37_3.py ├── file_37_4_1.py ├── file_37_4.py ├── file_37_2d.py └── file_37_2c.py ├── Chapter39 ├── file_39_3a.py ├── file_39_3b.py ├── file_39_6a.py ├── file_39_6b.py ├── file_39_3d.py ├── file_39_6c.py ├── file_39_1b.py ├── file_39_1a.py ├── file_39_6d.py ├── file_39_5a.py ├── file_39_8.py ├── file_39_8_1.py ├── file_39_3c.py ├── file_39_2.py ├── file_39_6e.py ├── file_39_4c.py ├── file_39_3_1a.py ├── file_39_3_1b.py ├── file_39_3e.py ├── file_39_4a.py ├── file_39_5b.py ├── file_39_7a.py ├── file_39_4b.py ├── file_39_7b.py └── file_39_2_1.py ├── Chapter12 ├── file_12_1_2.py ├── file_12_1_3b.py └── file_12_1_3a.py ├── Chapter31 ├── file_31_4_1b.py ├── file_31_4_1a.py ├── file_31_4_4c.py ├── file_31_4_4b.py ├── file_31_4_2.py ├── file_31_4_3c.py ├── file_31_4_3a.py ├── file_31_4_3b.py └── file_31_4_4a.py ├── Chapter22 ├── file_22_5_4b.py ├── file_22_2_1.py ├── file_22_3b.py ├── file_22_2_4.py ├── file_22_2_2.py ├── file_22_1_1.py ├── file_22_1_3.py ├── file_22_1_6.py ├── file_22_1_2.py ├── file_22_5_1.py ├── file_22_4_5.py ├── file_22_4_4c.py ├── file_22_4_4b.py ├── file_22_4_7.py ├── file_22_1_7.py ├── file_22_4_1b.py ├── file_22_5_2.py ├── file_22_1_4.py ├── file_22_4_1a.py ├── file_22_5_4a.py ├── file_22_2_3.py ├── file_22_4_4a.py ├── file_22_5_3b.py ├── file_22_3a.py ├── file_22_4_3.py ├── file_22_5_3a.py ├── file_22_3_1.py ├── file_22_4_6.py ├── file_22_2_5.py ├── file_22_1_5.py └── file_22_4_2.py ├── Chapter35 ├── file_35_3_1b.py ├── file_35_6_1.py ├── file_35_3_5b.py ├── file_35_3_7c.py ├── file_35_6_2a.py ├── file_35_6_2b.py ├── file_35_3_1a.py ├── file_35_1_1b.py ├── file_35_1_6b.py ├── file_35_4_1.py ├── file_35_1_1a.py ├── file_35_3_2.py ├── file_35_3_5a.py ├── file_35_2_1.py ├── file_35_1_6a.py ├── file_35_1_3c.py ├── file_35_2_2.py ├── file_35_1_5b.py ├── file_35_3_8b.py ├── file_35_4_3.py ├── file_35_3_7b.py ├── file_35_5_2.py ├── file_35_1_2.py ├── file_35_1_3b.py ├── file_35_4_6.py ├── file_35_5_4.py ├── file_35_3_6.py ├── file_35_6_3b.py ├── file_35_3_3b.py ├── file_35_3_7a.py ├── file_35_3_8a.py ├── file_35_1_5a.py ├── file_35_6_3a.py ├── file_35_1_4c.py ├── file_35_5_7.py ├── file_35_1_3a.py ├── file_35_3_3a.py ├── file_35_1_4b.py ├── file_35_2_3.py ├── file_35_5_5.py ├── file_35_4_9.py ├── file_35_3_4.py ├── file_35_6_5.py ├── file_35_4_11.py ├── file_35_1_4a.py ├── file_35_4_4.py ├── file_35_5_9.py ├── file_35_4_7.py ├── file_35_6_4.py ├── file_35_5_10.py └── file_35_5_6.py ├── Chapter13 ├── file_13_1_1b.py ├── file_13_1_1a.py ├── file_13_1_2f.py ├── file_13_1_2a.py ├── file_13_1_2d.py ├── file_13_1_3.py ├── file_13_1_2c.py ├── file_13_1_2e.py ├── file_13_1_4.py └── file_13_1_2b.py ├── Chapter18 ├── file_18_1_2.py ├── file_18_1.py ├── file_18_1_3.py └── file_18_1_1.py ├── Chapter33 ├── file_33_7_a.py ├── file_33_7_b.py ├── file_33_7_c.py ├── file_33_7_e.py ├── file_33_2_1d.py ├── file_33_5.py ├── file_33_6.py ├── file_33_2_1c.py ├── file_33_3_1b.py ├── file_33_2_1b.py ├── file_33_2_1a.py ├── file_33_3_1a.py ├── file_33_4_1b.py ├── file_33_4_1a.py └── file_33_7_d.py ├── Chapter38 ├── file_38_4_1.py ├── file_38_2a.py ├── file_38_3.py ├── file_38_2b.py ├── file_38_4.py └── file_38_4_2.py ├── Chapter32 ├── file_32_6_1b.py ├── file_32_6_2.py ├── file_32_6_1a.py ├── file_32_4_2.py ├── file_32_6_3.py └── file_32_4_1.py ├── Chapter41 ├── file_41_1_1.py ├── file_41_1_3.py ├── file_41_1_4.py ├── file_41_1_2.py ├── file_41_2_2.py ├── file_41_1_5.py ├── file_41_2_3.py └── file_41_2_1.py ├── .project ├── .pydevproject └── README.md /Chapter16/file_16_1_2b.py: -------------------------------------------------------------------------------- 1 | x = float(input()) 2 | print(abs(x)) 3 | -------------------------------------------------------------------------------- /Chapter25/file_25_1d.py: -------------------------------------------------------------------------------- 1 | for i in range(0, 11): 2 | print(i) 3 | -------------------------------------------------------------------------------- /Chapter25/file_25_1e.py: -------------------------------------------------------------------------------- 1 | for i in range(11): 2 | print(i) 3 | -------------------------------------------------------------------------------- /Chapter25/file_25_1a.py: -------------------------------------------------------------------------------- 1 | for i in [1, 2, 3, 4, 5]: 2 | print(i) 3 | -------------------------------------------------------------------------------- /Chapter25/file_25_1b.py: -------------------------------------------------------------------------------- 1 | for letter in "Hello": 2 | print(letter) 3 | -------------------------------------------------------------------------------- /Chapter25/file_25_1c.py: -------------------------------------------------------------------------------- 1 | for i in range(0, 11, 1): 2 | print(i) 3 | -------------------------------------------------------------------------------- /Chapter24/file_24_1.py: -------------------------------------------------------------------------------- 1 | i = 1 2 | while i <= 10: 3 | print(i) 4 | i += 1 5 | -------------------------------------------------------------------------------- /연습문제_해답.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jpub/Python_Algorithms/HEAD/연습문제_해답.pdf -------------------------------------------------------------------------------- /Chapter11/file_11_2g.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | print(math.pi) # 출력: 3.141592653589793 -------------------------------------------------------------------------------- /Chapter25/file_25_1f.py: -------------------------------------------------------------------------------- 1 | a = 10 2 | b = 0 3 | for i in range(a, b, -2): 4 | print(i) 5 | -------------------------------------------------------------------------------- /Chapter27/file_27_7_1a.py: -------------------------------------------------------------------------------- 1 | s = "안녕하세요!" 2 | 3 | for letter in s: 4 | print(letter) 5 | -------------------------------------------------------------------------------- /Chapter11/file_11_2c.py: -------------------------------------------------------------------------------- 1 | c, d = divmod(13, 4) 2 | 3 | print(c, d, sep = ", ") # 출력: 3, 1 4 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_1b.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | for i in range(1, 101): 3 | s = s + i 4 | print(s) 5 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_2b.py: -------------------------------------------------------------------------------- 1 | p = 1 2 | for i in range(2, 12, 2): 3 | p = p * i 4 | print(p) 5 | -------------------------------------------------------------------------------- /Chapter26/file_26_1.py: -------------------------------------------------------------------------------- 1 | for i in range(1, 3): 2 | for j in range(1, 4): 3 | print(i, j) 4 | -------------------------------------------------------------------------------- /Chapter26/file_26_1_1.py: -------------------------------------------------------------------------------- 1 | for i in range(4): 2 | for j in range(3): 3 | print("안녕! 철수") 4 | -------------------------------------------------------------------------------- /Chapter10/file_10_1.py: -------------------------------------------------------------------------------- 1 | a = int(input("숫자를 입력하여라: ")) 2 | 3 | b = a ** 2 4 | 5 | print(a, "의 제곱:", b) 6 | -------------------------------------------------------------------------------- /Chapter16/file_16_1_2a.py: -------------------------------------------------------------------------------- 1 | x = float(input()) 2 | 3 | if x < 0: 4 | x = (-1) * x 5 | 6 | print(x) 7 | -------------------------------------------------------------------------------- /Chapter24/file_24_2.py: -------------------------------------------------------------------------------- 1 | i = 1 2 | while True: 3 | print(i) 4 | i += 1 5 | if i > 10: break 6 | -------------------------------------------------------------------------------- /Chapter24/file_24_3.py: -------------------------------------------------------------------------------- 1 | i = 1 2 | while True: 3 | print(i) 4 | if i >= 10: break 5 | i += 1 6 | -------------------------------------------------------------------------------- /Chapter27/file_27_7_2a.py: -------------------------------------------------------------------------------- 1 | x = 2 2 | 3 | for i in range (-2, 3): 4 | x = x ** 2 5 | 6 | print(x) 7 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_1b.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | for i in range(1, 11, 2): 3 | s = s + i ** 2 4 | 5 | print(s) 6 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_2b.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | for y in range(5, -3, -2): 3 | s = s + 2 * y 4 | 5 | print(s) 6 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_3b.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | for i in range(1, 6): 3 | s = s + (i + 1) ** 2 4 | 5 | print(s) 6 | -------------------------------------------------------------------------------- /Chapter14/file_14_2b.py: -------------------------------------------------------------------------------- 1 | a = "Hello World" 2 | 3 | print(a[-1]) # 마지작 문자를 출력 4 | print(a[-3]) # 문자 r을 출력 5 | -------------------------------------------------------------------------------- /Chapter14/file_14_3_1c.py: -------------------------------------------------------------------------------- 1 | s = input("네 개 문자를 가진 단어를 입력하여라: ") 2 | 3 | s_rev = str[::-1] 4 | 5 | print(s_rev) 6 | -------------------------------------------------------------------------------- /Chapter14/file_14_4e.py: -------------------------------------------------------------------------------- 1 | a = "My NaMe is JohN" 2 | b = a.lower() 3 | 4 | print(b) # 출력: my name is john 5 | -------------------------------------------------------------------------------- /Chapter14/file_14_4f.py: -------------------------------------------------------------------------------- 1 | a = "My NaMe is JohN" 2 | b = a.upper() 3 | 4 | print(b) # 출력: MY NAME IS JOHN 5 | -------------------------------------------------------------------------------- /Chapter14/file_14_4j.py: -------------------------------------------------------------------------------- 1 | import string 2 | 3 | print(string.ascii_lowercase) # 출력: abcdefghijklmnopqrstuvwxyz 4 | -------------------------------------------------------------------------------- /Chapter14/file_14_4k.py: -------------------------------------------------------------------------------- 1 | import string 2 | 3 | print(string.ascii_uppercase) # 출력: ABCDEFGHIJKLMNOPQRSTUVWXYZ 4 | -------------------------------------------------------------------------------- /Chapter27/file_27_7_2b.py: -------------------------------------------------------------------------------- 1 | x = 2 2 | 3 | i = -2 4 | while i < 3: 5 | x = x ** 2 6 | i = i + 1 7 | 8 | print(x) 9 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_3a.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | i = 1 3 | 4 | while i < 6: 5 | i += 1 6 | s = s + i ** 2 7 | 8 | print(s) 9 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_2a.py: -------------------------------------------------------------------------------- 1 | p = 1 2 | 3 | i = 2 4 | while i <= 10: 5 | p = p * i 6 | i += 2 7 | 8 | print(p) 9 | -------------------------------------------------------------------------------- /Chapter17/file_17_1_3c.py: -------------------------------------------------------------------------------- 1 | a = float(input()) 2 | b = float(input()) 3 | 4 | maximum = max(a, b) 5 | print("큰 값: ", maximum) 6 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_1a.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | i = 1 3 | 4 | while i <= 9: 5 | s = s + i ** 2 6 | i += 2 7 | 8 | print(s) 9 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_2a.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | y = 5 3 | 4 | while y != -3: 5 | s = s + 2 * y 6 | y = y - 2 7 | 8 | print(s) 9 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_1a.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | 3 | i = 1 4 | while i <= 100: 5 | s = s + i 6 | i = i + 1 7 | 8 | print(s) 9 | -------------------------------------------------------------------------------- /Chapter14/file_14_3_1a.py: -------------------------------------------------------------------------------- 1 | s = input("네 개 문자를 가진 단어를 입력하여라: ") 2 | 3 | s_rev = s[3] + s[2] + s[1] + s[0] 4 | 5 | print(s_rev) 6 | -------------------------------------------------------------------------------- /Chapter14/file_14_4a.py: -------------------------------------------------------------------------------- 1 | a = " Hello " 2 | b = a.strip() 3 | 4 | print(b, "Poseidon!") # Hello Poseidon!을 출력한다. 5 | -------------------------------------------------------------------------------- /Chapter14/file_14_4d.py: -------------------------------------------------------------------------------- 1 | a = "I am newbie in Python. Python rocks!" 2 | i = a.find("newbie") 3 | 4 | print(i) # 출력: 5 5 | -------------------------------------------------------------------------------- /Chapter17/file_17_1_4.py: -------------------------------------------------------------------------------- 1 | x = int(input("정수를 입력하여라: ")) 2 | 3 | if x % 2 == 0: 4 | print("짝수") 5 | else: 6 | print("홀수") 7 | -------------------------------------------------------------------------------- /Chapter27/file_27_7_3a.py: -------------------------------------------------------------------------------- 1 | f = int(input()) 2 | x = 3 3 | 4 | for j in range(20, f, -5): 5 | x = x / 2 6 | 7 | print(x, j) 8 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_4.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | s = 0 3 | for i in range(3, 3 * N + 3, 3): 4 | s = s + i ** i 5 | 6 | print(s) 7 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_2a.py: -------------------------------------------------------------------------------- 1 | radius = float(input("반지름값을 입력하여라: ")) 2 | 3 | area = 3.14159 * radius ** 2 4 | 5 | print("원의 면적: ", area) 6 | -------------------------------------------------------------------------------- /Chapter14/file_14_3_1b.py: -------------------------------------------------------------------------------- 1 | s = input("네 개 문자를 가진 단어를 입력하여라: ") 2 | 3 | a, b, c, d = s 4 | s_rev = d + c + b + a 5 | 6 | print(s_rev) 7 | -------------------------------------------------------------------------------- /Chapter16/file_16_1_1.py: -------------------------------------------------------------------------------- 1 | a = int(input()) 2 | 3 | y = 5 4 | if a * 2 > 100: 5 | a = a * 3 6 | y = a * 4 7 | 8 | print(a, y) 9 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_3b.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | s = 0 3 | for i in range(2, 2 * N + 2, 2): 4 | s = s + i ** 2 5 | 6 | print(s) 7 | -------------------------------------------------------------------------------- /Chapter25/file_25_1_5.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | n = int(input("정수를 입력하여라: ")) 4 | 5 | for i in range(n + 1): 6 | print(math.sqrt(i)) 7 | -------------------------------------------------------------------------------- /Chapter27/file_27_7_1b.py: -------------------------------------------------------------------------------- 1 | s = "안녕하세요!" 2 | 3 | i = 0 4 | while i < len(s) : 5 | letter = s[i] 6 | print(letter) 7 | i += 1 8 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_5b.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | 3 | for y in range(5, -10, -3): 4 | s = s - 2 * y 5 | s = s - 4 * (y - 3) 6 | 7 | print(s) 8 | -------------------------------------------------------------------------------- /Chapter09/file_9_2.py: -------------------------------------------------------------------------------- 1 | #-*- coding: utf-8 -*- 2 | name = input("이름을 입력하세요: ") 3 | print("안녕하세요, ", name, "님!", sep="") 4 | print("좋은 하루 보내세요!") 5 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_5.py: -------------------------------------------------------------------------------- 1 | fahrenheit = float(input("화씨 온도를 입력하여라: ")) 2 | 3 | kelvin = (fahrenheit + 459.67) / 1.8 4 | 5 | print("켈빈 온도:", kelvin) -------------------------------------------------------------------------------- /Chapter14/file_14_4_b.py: -------------------------------------------------------------------------------- 1 | number = int(input("정수를 입력하여라: ")) 2 | 3 | reversed_number = int(str(number)[::-1]) 4 | 5 | print(reversed_number) 6 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_3a.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | s = 0 3 | i = 2 4 | while i <= 2 * N: 5 | s = s + i ** 2 6 | i += 2 7 | 8 | print(s) 9 | -------------------------------------------------------------------------------- /Chapter09/file_9_4a.py: -------------------------------------------------------------------------------- 1 | S = 0 2 | a = float(input("첫 번째 수를 입력하세요: ")) 3 | b = float(input("두 번째 수를 입력하세요: ")) 4 | s = a + b 5 | print("두 수의 합:", S) 6 | -------------------------------------------------------------------------------- /Chapter11/file_11_2h.py: -------------------------------------------------------------------------------- 1 | a = "5.2" 2 | b = "2.4" 3 | 4 | print(a + b) # 출력: 5.22.4 5 | print(float(a) + float(b)) # 출력: 7.6 6 | -------------------------------------------------------------------------------- /Chapter11/file_11_2n.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | seq = [5.5, 6.3, 2] # 숫자들의 시퀀스를 변수 seq에 할당 4 | print(math.fsum(seq)) # 출력: 13.8 5 | -------------------------------------------------------------------------------- /Chapter19/file_19_1_2b.py: -------------------------------------------------------------------------------- 1 | a = float(input()) 2 | 3 | if a > 0: 4 | print("양수") 5 | elif a < 0: 6 | print("음수") 7 | else: 8 | print("0") 9 | -------------------------------------------------------------------------------- /Chapter27/file_27_13.py: -------------------------------------------------------------------------------- 1 | for i in range(1, 10): 2 | for j in range(1, 10): 3 | print(i, "x", j, "=", i * j, end = "\t") 4 | print() 5 | -------------------------------------------------------------------------------- /Chapter37/file_37_2a.py: -------------------------------------------------------------------------------- 1 | def get_message(): 2 | msg = "안녕 철수" 3 | return msg 4 | 5 | # 메인 코드 6 | print("안녕!") 7 | a = get_message() 8 | print(a) -------------------------------------------------------------------------------- /Chapter39/file_39_3a.py: -------------------------------------------------------------------------------- 1 | def f1(b): 2 | b += 1 3 | print(b) # 11이 출력됨 4 | 5 | # 메인 코드 6 | a = 10 7 | f1(a) 8 | print(a) # 10이 출력됨 9 | -------------------------------------------------------------------------------- /Chapter39/file_39_3b.py: -------------------------------------------------------------------------------- 1 | def f1(a): 2 | a += 1 3 | print(a) # 11이 출력됨 4 | 5 | # 메인 코드 6 | a = 10 7 | f1(a) 8 | print(a) # 10이 출력됨 9 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_2b.py: -------------------------------------------------------------------------------- 1 | PI = 3.14159 2 | 3 | radius = float(input("반지름값을 입력하여라: ")) 4 | 5 | area = PI * radius ** 2 6 | 7 | print("원의 면적: ", area) 8 | -------------------------------------------------------------------------------- /Chapter11/file_11_2o.py: -------------------------------------------------------------------------------- 1 | import math # math 모듈을 임포트한다. 2 | 3 | a = math.tan(10) 4 | print(a) # 출력: 0.6483608274590866 5 | -------------------------------------------------------------------------------- /Chapter12/file_12_1_2.py: -------------------------------------------------------------------------------- 1 | x = float(input("x 값을 입력하여라: ")) 2 | z = float(input("z 값을 입력하여라: ")) 3 | 4 | y = 10 * x - (10 - z) / 4 5 | 6 | print("결과:", y) 7 | -------------------------------------------------------------------------------- /Chapter25/file_25_1_4.py: -------------------------------------------------------------------------------- 1 | total = 0 2 | 3 | for i in range(10): 4 | a = float(input("숫자를 입력하여라: ")) 5 | total = total + a 6 | 7 | print(total) 8 | -------------------------------------------------------------------------------- /Chapter27/file_27_4c.py: -------------------------------------------------------------------------------- 1 | s = "I have a dream" 2 | 3 | letter = input("검색할 영문자를 입력하여라: ") 4 | 5 | if letter in s: 6 | print("문자", letter, "를 찾았습니다.") 7 | -------------------------------------------------------------------------------- /Chapter27/file_27_8_5a.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | y = 5 3 | 4 | while y > -9: 5 | s = s - 2 * y 6 | y = y - 3 7 | s = s - 4 * y 8 | 9 | print(s) 10 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_12.py: -------------------------------------------------------------------------------- 1 | x = int(input("숫자를 입력하여라: ")) 2 | count = 0 3 | 4 | while x != 0: 5 | count += 1 6 | x = x // 10 7 | 8 | print(count) 9 | -------------------------------------------------------------------------------- /Chapter29/file_29_6_2.py: -------------------------------------------------------------------------------- 1 | grains = 1 2 | total = 1 3 | for i in range(63): 4 | grains = 2 * grains 5 | total = total + grains 6 | 7 | print(total) 8 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_1b.py: -------------------------------------------------------------------------------- 1 | words = [None] * 10 2 | for i in range(10): 3 | words[i] = input() 4 | 5 | for word in words[::-1]: 6 | print(word) 7 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_4.py: -------------------------------------------------------------------------------- 1 | a = float(input("가속도값을 입력하여라: ")) 2 | t = float(input("주행 시간을 입력하여라: ")) 3 | 4 | S = 0.5 * a * t ** 2 5 | 6 | print("주행 거리(m):", S) 7 | -------------------------------------------------------------------------------- /Chapter11/file_11_2b.py: -------------------------------------------------------------------------------- 1 | import math # math 모듈을 임포트한다. 2 | 3 | p = 3.14159265 4 | a = math.cos(2 * p) 5 | 6 | print(a) # 출력: 1.0 7 | -------------------------------------------------------------------------------- /Chapter11/file_11_2l.py: -------------------------------------------------------------------------------- 1 | import math # math 모듈을 임포트한다. 2 | 3 | a = math.sin(3 * math.pi / 2) 4 | print(a) # 출력: -1.0 5 | -------------------------------------------------------------------------------- /Chapter14/file_14_2a.py: -------------------------------------------------------------------------------- 1 | a = "Hello World" 2 | 3 | print(a[0]) # 첫 번째 문자를 출력 4 | print(a[6]) # 문자 W를 출력 5 | print(a[10]) # 마지작 문자를 출력 6 | -------------------------------------------------------------------------------- /Chapter17/file_17_1_3b.py: -------------------------------------------------------------------------------- 1 | a = float(input()) 2 | b = float(input()) 3 | 4 | maximum = a 5 | if b > a: 6 | maximum = b 7 | 8 | print("큰 값: ", maximum) 9 | -------------------------------------------------------------------------------- /Chapter22/file_22_5_4b.py: -------------------------------------------------------------------------------- 1 | sentence = input("영어 문장을 입력하여라: ") 2 | 3 | if sentence[0] == sentence[0].upper() and sentence[-1] in ".?!": 4 | print("이상 없음!") 5 | -------------------------------------------------------------------------------- /Chapter24/file_24_1_6.py: -------------------------------------------------------------------------------- 1 | p = 1 2 | 3 | i = 1 4 | while i <= 20: 5 | a = float(input()) 6 | p = p * a 7 | 8 | i += 1 9 | 10 | print(p) 11 | -------------------------------------------------------------------------------- /Chapter24/file_24_1_9.py: -------------------------------------------------------------------------------- 1 | total = 0 2 | 3 | a = float(input()) 4 | while a != -1: 5 | total = total + a 6 | a = float(input()) 7 | 8 | print(total) 9 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_2.py: -------------------------------------------------------------------------------- 1 | for x in range(-20, 21): 2 | for y in range(-20, 21): 3 | if 3 * x ** 2 - 6 * y ** 2 == 6: 4 | print(x, y) 5 | -------------------------------------------------------------------------------- /Chapter39/file_39_6a.py: -------------------------------------------------------------------------------- 1 | def display_value(): 2 | print(test) # 10 출력 3 | 4 | # 메인 코드 5 | test = 10 6 | display_value() 7 | print(test) # 10 출력 8 | -------------------------------------------------------------------------------- /Chapter27/file_27_7_3b.py: -------------------------------------------------------------------------------- 1 | f = int(input()) 2 | x = 3 3 | 4 | j = 20 5 | while j > f: 6 | x = x / 2 7 | j += -5 8 | 9 | j -= -5 10 | print(x, j) 11 | -------------------------------------------------------------------------------- /Chapter27/file_27_7_3c.py: -------------------------------------------------------------------------------- 1 | f = int(input()) 2 | x = 3 3 | 4 | j = 20 5 | while j > f: 6 | x = x / 2 7 | j -= 5 8 | 9 | j += 5 10 | print(x, j) 11 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_1a.py: -------------------------------------------------------------------------------- 1 | words = [None] * 10 2 | for i in range(10): 3 | words[i] = input() 4 | 5 | for i in range(9, -1, -1): 6 | print(words[i]) 7 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_1.py: -------------------------------------------------------------------------------- 1 | base = float(input("밑변을 입력하여라: ")) 2 | height = float(input("높이를 입력하여라: ")) 3 | 4 | area = base * height 5 | 6 | print("평행 사변형의 면적:", area) 7 | -------------------------------------------------------------------------------- /Chapter14/file_14_4b.py: -------------------------------------------------------------------------------- 1 | a = "I am newbie in Java. Java rocks!" 2 | b = a.replace("Java", "Python") 3 | 4 | print(b) # 츨력: I am newbie in Python. Python rocks 5 | -------------------------------------------------------------------------------- /Chapter14/file_14_4h.py: -------------------------------------------------------------------------------- 1 | age = int(input("당신의 나이를 입력하여라: ")) 2 | 3 | new_age = age + 10 4 | message = "10년 후 당신의 나이는 " + str(new_age) + "살 입니다." 5 | 6 | print(message) 7 | -------------------------------------------------------------------------------- /Chapter14/file_14_4c.py: -------------------------------------------------------------------------------- 1 | a = "Hello Olympians!" 2 | print(len(a)) # 출력: 16 3 | 4 | b = "I am newbie in Python" 5 | k = len(b) 6 | print(k) # 출력: 21 7 | -------------------------------------------------------------------------------- /Chapter22/file_22_2_1.py: -------------------------------------------------------------------------------- 1 | x = float(input()) 2 | 3 | if x == 0 or x == 4: 4 | print("오류: 0-나눗셈") 5 | else: 6 | y = (5 + x) / x + (x + 9) / (x - 4) 7 | print(y) 8 | -------------------------------------------------------------------------------- /Chapter24/file_24_1_5.py: -------------------------------------------------------------------------------- 1 | total = 0 2 | 3 | i = 1 4 | while i <= 4: 5 | a = float(input()) 6 | total = total + a 7 | 8 | i += 1 9 | 10 | print(total) 11 | -------------------------------------------------------------------------------- /Chapter24/file_24_2_6.py: -------------------------------------------------------------------------------- 1 | p = 1 2 | 3 | a = float(input()) 4 | while True: 5 | p = p * a 6 | a = float(input()) 7 | if a == -1: break 8 | 9 | print(p) 10 | -------------------------------------------------------------------------------- /Chapter14/file_14_4g.py: -------------------------------------------------------------------------------- 1 | a = "I am newbie in Java. Java rocks!" 2 | b = a.replace("Java", "Python").upper() 3 | 4 | print(b) # 출력: I AM NEWBIE IN PYTHON. PYTHON ROCKS 5 | -------------------------------------------------------------------------------- /Chapter17/file_17_1_3a.py: -------------------------------------------------------------------------------- 1 | a = float(input()) 2 | b = float(input()) 3 | 4 | if b > a: 5 | maximum = b 6 | else: 7 | maximum = a 8 | 9 | print("큰 값: ", maximum) 10 | -------------------------------------------------------------------------------- /Chapter24/file_24_1_7.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | p = 1 4 | 5 | i = 1 6 | while i <= n: 7 | a = float(input()) 8 | p = p * a 9 | i += 1 10 | 11 | print(p) 12 | -------------------------------------------------------------------------------- /Chapter29/file_29_5b.py: -------------------------------------------------------------------------------- 1 | maximum = -1 2 | 3 | for i in range(10): 4 | w = int(input("몸무게값을 입력하여라: ")) 5 | if w > maximum: 6 | maximum = w 7 | 8 | print(maximum) 9 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_1b.py: -------------------------------------------------------------------------------- 1 | LAKES = 20 2 | 3 | depths = [None] * LAKES 4 | for i in range(LAKES): 5 | depths[i] = float(input()) 6 | 7 | maximum = max(depths) 8 | print(maximum) -------------------------------------------------------------------------------- /Chapter39/file_39_6b.py: -------------------------------------------------------------------------------- 1 | def display_value(): 2 | test = 20 3 | print(test) # 20 출력 4 | 5 | # 메인 코드 6 | test = 10 7 | display_value() 8 | print(test) # 10 출력 9 | -------------------------------------------------------------------------------- /Chapter11/file_11_2_2.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | a = float(input("가속도값을 입력하여라: ")) 4 | S = float(input("주행 거리를 입력하여라: ")) 5 | 6 | t = math.sqrt(2 * S / a) 7 | 8 | print("주행 시간(초):", t) 9 | -------------------------------------------------------------------------------- /Chapter14/file_14_2_1.py: -------------------------------------------------------------------------------- 1 | number = int(input("세 자리 정수를 입력하여라: ")) 2 | 3 | digit1, digit2, digit3 = str(number) 4 | 5 | total = int(digit1) + int(digit2) + int(digit3) 6 | print(total) 7 | -------------------------------------------------------------------------------- /Chapter14/file_14_2c.py: -------------------------------------------------------------------------------- 1 | name = "Zeus" 2 | 3 | a, b, c, d = name 4 | 5 | print(a) # 문자 Z을 출력 6 | print(b) # 문자 e을 출력 7 | print(c) # 문자 u을 출력 8 | print(d) # 문자 s을 출력 9 | -------------------------------------------------------------------------------- /Chapter19/file_19_1_2a.py: -------------------------------------------------------------------------------- 1 | a = float(input()) 2 | 3 | if a > 0: 4 | print("양수") 5 | else: 6 | if a < 0: 7 | print("음수") 8 | else: 9 | print("0") 10 | -------------------------------------------------------------------------------- /Chapter22/file_22_3b.py: -------------------------------------------------------------------------------- 1 | print("네 사람의 몸무게를 입력하여라: ") 2 | 3 | w1 = int(input()) 4 | w2 = int(input()) 5 | w3 = int(input()) 6 | w4 = int(input()) 7 | 8 | print(min(w1, w2, w3, w4)) 9 | -------------------------------------------------------------------------------- /Chapter29/file_29_6_1b.py: -------------------------------------------------------------------------------- 1 | for f in range(0, 1001, 5): 2 | fahrenheit = f / 10 3 | kelvin = (fahrenheit + 459.67) / 1.8 4 | print("화씨 온도:", fahrenheit, "켈빈 온도:", kelvin) 5 | -------------------------------------------------------------------------------- /Chapter11/file_11_2m.py: -------------------------------------------------------------------------------- 1 | import math # math 모듈을 임포트한다. 2 | 3 | print(math.sqrt(9)) # 출력: 3.0 4 | print(math.sqrt(2)) # 출력: 1.4142135623730951 5 | -------------------------------------------------------------------------------- /Chapter37/file_37_4_2.py: -------------------------------------------------------------------------------- 1 | def total(a, b): 2 | return a + b 3 | 4 | # 메인 코드 5 | num1 = float(input()) 6 | num2 = float(input()) 7 | 8 | print(num1, "+", num2, ":", total(num1, num2)) 9 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_3.py: -------------------------------------------------------------------------------- 1 | miles_driven = float(input("주행한 총 마일을 입력하여라: ")) 2 | gallons = float(input("소비된 갤런 값을 입력하여라: ")) 3 | 4 | mpg = miles_driven / gallons 5 | 6 | print("자동차 연비(MPG):", mpg) -------------------------------------------------------------------------------- /Chapter11/file_11_2a.py: -------------------------------------------------------------------------------- 1 | a = -5 2 | b = abs(a) 3 | 4 | print(abs(a)) # 출력: 5 5 | print(b) # 출력: 5 6 | print(abs(-5.2)) # 출력: 5.2 7 | print(abs(5.2)) # 출력: 5.2 -------------------------------------------------------------------------------- /Chapter13/file_13_1_1b.py: -------------------------------------------------------------------------------- 1 | number1 = int(input("첫 번째 숫자를 입력하여라: ")) 2 | number2 = int(input("두 번째 숫자를 입력하여라: ")) 3 | 4 | q, r = divmod(number1, number2) 5 | 6 | print("몫값:", q, "\n나머지 값:", r) 7 | -------------------------------------------------------------------------------- /Chapter24/file_24_1_8.py: -------------------------------------------------------------------------------- 1 | total = 0 2 | 3 | i = 1 4 | while i <= 20: 5 | a = int(input()) 6 | if a % 2 != 0: 7 | total= total + a 8 | i += 1 9 | 10 | print(total) 11 | -------------------------------------------------------------------------------- /Chapter24/file_24_2_5a.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | p = 1 4 | 5 | i = 1 6 | 7 | while i <= n: 8 | a = float(input()) 9 | p = p * a 10 | 11 | i += 1 12 | 13 | print(p) 14 | -------------------------------------------------------------------------------- /Chapter29/file_29_6_1a.py: -------------------------------------------------------------------------------- 1 | fahrenheit = 0 2 | while fahrenheit <= 100: 3 | kelvin = (fahrenheit + 459.67) / 1.8 4 | print("화씨 온도:", fahrenheit, "켈빈 온도:", kelvin) 5 | fahrenheit += 0.5 6 | -------------------------------------------------------------------------------- /Chapter17/file_17_1_2.py: -------------------------------------------------------------------------------- 1 | a = float(input()) 2 | 3 | z = a * 10 4 | w = (z - 4) * (a - 3) / 7 + 36 5 | 6 | if a < z >= w: 7 | y = 2 * a 8 | else: 9 | y = 4 * a 10 | 11 | print(y) 12 | -------------------------------------------------------------------------------- /Chapter29/file_29_2_2a.py: -------------------------------------------------------------------------------- 1 | for i in range(100, 1000): 2 | digit3, r = divmod(i, 100) 3 | digit2, digit1 = divmod(r, 10) 4 | if digit3 < digit2 and digit2 < digit1: 5 | print(i) 6 | -------------------------------------------------------------------------------- /Chapter37/file_37_2b.py: -------------------------------------------------------------------------------- 1 | def display(color): 2 | msg = "무지개에 " + color + "이 있다." 3 | return msg 4 | 5 | # 메인 코드 6 | print(display("빨간색")) 7 | print(display("노란색")) 8 | print(display("파란색")) 9 | -------------------------------------------------------------------------------- /Chapter14/file_14_3b.py: -------------------------------------------------------------------------------- 1 | a = "Hello World" 2 | 3 | print(a[3:-2]) # "lo Wor"를 출력 4 | print(a[-4:-2]) # 문자 o와 r을 출력 5 | print(a[-3:]) # "rld"를 출력 6 | print(a[:-3]) # "Hello Wo"를 출력 7 | -------------------------------------------------------------------------------- /Chapter19/file_19_1_1.py: -------------------------------------------------------------------------------- 1 | x = int(input()) 2 | y = 10 3 | 4 | if x < 30: 5 | if x < 15: 6 | y = y + 2 7 | else: 8 | y -= 1 9 | else: 10 | y += 1 11 | 12 | print(y) 13 | -------------------------------------------------------------------------------- /Chapter29/file_29_2_1d.py: -------------------------------------------------------------------------------- 1 | x = input("한 자릿수 정수(0 - 9)를 입력하여라: ") 2 | 3 | for i in range(100, 1000): 4 | digit3, digit2, digit1 = str(i) 5 | if x in [digit3, digit2, digit1]: 6 | print(i) 7 | -------------------------------------------------------------------------------- /Chapter29/file_29_2_2c.py: -------------------------------------------------------------------------------- 1 | for digit3 in range(1, 8): 2 | for digit2 in range(digit3 + 1, 9): 3 | for digit1 in range(digit2 + 1, 10): 4 | print(digit3 * 100 + digit2 * 10 + digit1) 5 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_4b.py: -------------------------------------------------------------------------------- 1 | x = int(input()) 2 | 3 | number_of_divisors = 2 4 | for i in range(2, x // 2 + 1): 5 | if x % i == 0: 6 | number_of_divisors += 1 7 | 8 | print(number_of_divisors) 9 | -------------------------------------------------------------------------------- /Chapter39/file_39_3d.py: -------------------------------------------------------------------------------- 1 | def f1(a): 2 | a[0] += 1 3 | print(a[0]) # 6이 출력됨 4 | 5 | # 메인 코드 6 | a = [5, 10, 15, 20] 7 | print(a[0]) # 5가 출력됨 8 | f1(a) 9 | print(a[0]) # 6이 출력됨 10 | -------------------------------------------------------------------------------- /Chapter39/file_39_6c.py: -------------------------------------------------------------------------------- 1 | def display_value(): 2 | print(test) # 이 명령문에서 오류가 발생한다. 3 | test = 20 4 | print(test) 5 | 6 | # 메인 코드 7 | test = 10 8 | display_value() 9 | print(test) 10 | -------------------------------------------------------------------------------- /Chapter13/file_13_1_1a.py: -------------------------------------------------------------------------------- 1 | number1 = int(input("첫 번째 숫자를 입력하여라: ")) 2 | number2 = int(input("두 번째 숫자를 입력하여라: ")) 3 | 4 | q = number1 // number2 5 | r = number1 % number2 6 | 7 | print("몫값:", q, "\n나머지 값:", r) 8 | -------------------------------------------------------------------------------- /Chapter18/file_18_1_2.py: -------------------------------------------------------------------------------- 1 | x = int(input("정수를 입력하여라(0 - 999): ")) 2 | 3 | if x <= 9: 4 | count = 1 5 | elif x <= 99: 6 | count = 2 7 | else: 8 | count = 3 9 | 10 | print("자릿수:", count) 11 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_11.py: -------------------------------------------------------------------------------- 1 | x = int(input()) 2 | s = 0 3 | 4 | while x != 0: 5 | digit = x % 10 # x MOD 10 연산 6 | s = s + digit 7 | x = x // 10 # x DIV 10 연산 8 | 9 | print(s) 10 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_4a.py: -------------------------------------------------------------------------------- 1 | x = int(input()) 2 | 3 | number_of_divisors = 0 4 | for i in range(1, x + 1): 5 | if x % i == 0: 6 | number_of_divisors += 1 7 | 8 | print(number_of_divisors) 9 | -------------------------------------------------------------------------------- /Chapter09/file_9_4b.py: -------------------------------------------------------------------------------- 1 | a = float(input("첫 번째 수를 입력하세요: ")) 2 | b = float(input("두 번째 수를 입력하세요: ")) 3 | s = a + b 4 | d = a - b 5 | average = a + b / 2 6 | print("합:", s) 7 | print("차:", d) 8 | print("평균:", average) 9 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_9.py: -------------------------------------------------------------------------------- 1 | count = 0 2 | 3 | x = float(input("숫자를 입력하여라: ")) 4 | while int(x) == x: 5 | if x > 0: 6 | count += 1 7 | x = float(input("숫자를 입력하여라: ")) 8 | 9 | print(count) 10 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_3a.py: -------------------------------------------------------------------------------- 1 | m1 = int(input()) 2 | m2 = int(input()) 3 | s = 0 4 | while m2 != 0: 5 | if m2 % 2 != 0: 6 | s += m1 7 | 8 | m1 *= 2 9 | m2 //= 2 10 | 11 | print(s) 12 | -------------------------------------------------------------------------------- /Chapter35/file_35_6_1.py: -------------------------------------------------------------------------------- 1 | DAYS = 31 2 | 3 | t = [None] * DAYS 4 | 5 | for i in range(DAYS): 6 | t[i] = int(input()) 7 | 8 | for i in range(DAYS): 9 | if t[i] < 2: 10 | print(i + 1, end = "\t") -------------------------------------------------------------------------------- /Chapter39/file_39_1b.py: -------------------------------------------------------------------------------- 1 | def f1(test): 2 | test += 1 3 | print(test) # f1() 프로시저의 test 변수를 출력한다(6을 출력). 4 | 5 | # 메인 코드 6 | test = 5 7 | f1(test) 8 | print(test) # 메인 코드의 test 변수를 출력한다(5를 출력). 9 | -------------------------------------------------------------------------------- /Chapter24/file_24_2_5b.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | p = 1 4 | 5 | i = 1 6 | 7 | while True: 8 | a = float(input()) 9 | p = p * a 10 | 11 | i += 1 12 | if i > n: break 13 | 14 | print(p) 15 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_4c.py: -------------------------------------------------------------------------------- 1 | import math 2 | ELEMENTS = 50 3 | 4 | values = [None] * ELEMENTS 5 | for i in range(ELEMENTS): 6 | values[i] = float(input()) 7 | 8 | total = math.fsum(values) 9 | 10 | print(total) -------------------------------------------------------------------------------- /Chapter29/file_29_5a.py: -------------------------------------------------------------------------------- 1 | w = int(input("몸무게값을 입력하여라: ")) 2 | maximum = w 3 | 4 | for i in range(9): 5 | w = int(input("몸무게값을 입력하여라: ")) 6 | if w > maximum: 7 | maximum = w 8 | 9 | print(maximum) 10 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_4b.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 50 2 | 3 | values = [None] * ELEMENTS 4 | 5 | total = 0 6 | for i in range(ELEMENTS): 7 | values[i] = float(input()) 8 | total = total + values[i] 9 | 10 | print(total) -------------------------------------------------------------------------------- /Chapter33/file_33_7_a.py: -------------------------------------------------------------------------------- 1 | a = [3, 6, 10, 12, 4, 2, 1] 2 | 3 | print(len(a)) # 출력: 7 4 | 5 | length = len(a[2:4]) 6 | print(length) # 출력: 2 7 | 8 | for i in range(len(a)): 9 | print (a[i], end = " ") # 출력: 3 6 10 12 4 2 1 -------------------------------------------------------------------------------- /Chapter10/file_10_1_6.py: -------------------------------------------------------------------------------- 1 | VAT = 0.19 2 | price_before_tax = float(input("상품의 세전 가격을 입력하여라: ")) 3 | 4 | sales_tax = price_before_tax * VAT 5 | price_after_tax = price_before_tax + sales_tax 6 | 7 | print("세후 가격:", price_after_tax) -------------------------------------------------------------------------------- /Chapter14/file_14_4_2.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | last_name = input("당신의 영문 성 이름을 입력하여라: ") 4 | 5 | # 100과 999 사이의 랜덤 정수를 얻는다. 6 | random_int = random.randrange(100, 1000) 7 | 8 | print(last_name[:4].lower() + str(random_int)) 9 | -------------------------------------------------------------------------------- /Chapter22/file_22_2_4.py: -------------------------------------------------------------------------------- 1 | a = float(input("a 값을 입력하여라: ")) 2 | b = float(input("b 값을 입력하여라: ")) 3 | 4 | if a != 0: 5 | x = -b / a 6 | print(x) 7 | elif b != 0: 8 | print("불능") 9 | else: 10 | print("부정") 11 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_8.py: -------------------------------------------------------------------------------- 1 | count = 0 2 | 3 | total = 0 # total 변수의 초기화 4 | while total <= 1000: 5 | x = float(input()) 6 | count += 1 7 | total += x # total 변수의 갱신/변경 8 | 9 | print(count) 10 | -------------------------------------------------------------------------------- /Chapter37/file_37_3.py: -------------------------------------------------------------------------------- 1 | def add( n1, n2, n3 ): 2 | result = n1 + n2 + n3 3 | return result 4 | 5 | # 메인 코드 6 | a = input() 7 | b = input() 8 | c = input() 9 | 10 | total = add( a, b, c ) 11 | 12 | print(total) 13 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_2.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 5 2 | 3 | values = [None] * ELEMENTS 4 | 5 | for i in range(ELEMENTS): 6 | values[i] = float(input()) 7 | for value in values[::-1]: 8 | if value > 0: 9 | print(value) 10 | -------------------------------------------------------------------------------- /Chapter38/file_38_4_1.py: -------------------------------------------------------------------------------- 1 | def display_abs(n): 2 | if n < 0: 3 | n = (-1) * n 4 | print(n) 5 | 6 | # 메인 코드 7 | a = float(input()) 8 | display_abs(a) #입력값에 대한 절댓값을 출력한다. 9 | print(a) #입력값을 출력한다. 10 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_3c.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 100 2 | 3 | values = [None] * ELEMENTS 4 | 5 | for i in range(ELEMENTS): 6 | values[i] = int(input()) 7 | 8 | for value in values[1::2]: 9 | if value % 2 == 0: 10 | print(value) -------------------------------------------------------------------------------- /Chapter37/file_37_4_1.py: -------------------------------------------------------------------------------- 1 | def total(a, b): 2 | s = a + b 3 | return s 4 | 5 | # 메인 코드가 여기서 시작된다. 6 | num1 = float(input()) 7 | num2 = float(input()) 8 | result = total(num1, num2) 9 | print(num1, "+", num2, ":", result) 10 | -------------------------------------------------------------------------------- /Chapter39/file_39_1a.py: -------------------------------------------------------------------------------- 1 | def f1(): 2 | test = 22 3 | print(test) 4 | return True 5 | 6 | def f2(test): 7 | print(test) 8 | 9 | # 메인 코드 10 | test = 5 11 | print(test) 12 | ret = f1() 13 | f2(10) 14 | print(test) 15 | -------------------------------------------------------------------------------- /Chapter39/file_39_6d.py: -------------------------------------------------------------------------------- 1 | def display_value(): 2 | global test 3 | print(test) # 10 출력 4 | test = 20 5 | print(test) # 20 출력 6 | 7 | # 메인 코드 8 | test = 10 9 | display_value() 10 | print(test) # 20 출력 11 | -------------------------------------------------------------------------------- /Chapter12/file_12_1_3b.py: -------------------------------------------------------------------------------- 1 | x = float(input("x 값을 입력하여라: ")) 2 | w = float(input("w 값을 입력하여라: ")) 3 | z = float(input("z 값을 입력하여라: ")) 4 | 5 | y = (5 * (3 * x ** 2 + 5 * x + 2)/(7 * w - 1 / z) - z)/(4 * ((3 + x) / 7)) 6 | 7 | print("결과:", y) 8 | -------------------------------------------------------------------------------- /Chapter29/file_29_2_2b.py: -------------------------------------------------------------------------------- 1 | for digit3 in range(1, 10): 2 | for digit2 in range(10): 3 | for digit1 in range(10): 4 | if digit3 < digit2 and digit2 < digit1: 5 | print(digit3 * 100 + digit2 * 10 + digit1) 6 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_3a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 100 2 | values = [None] * ELEMENTS 3 | 4 | for i in range(ELEMENTS): 5 | values[i] = int(input()) 6 | 7 | for i in range(ELEMENTS): 8 | if i % 2 != 0 and values[i] % 2 == 0: 9 | print(values[i]) -------------------------------------------------------------------------------- /Chapter14/file_14_3a.py: -------------------------------------------------------------------------------- 1 | a = "Hello World" 2 | 3 | print(a[7:9]) # 문자 o와 r을 출력 4 | 5 | print(a[4:10:2]) # step이 2로 설정. 문자 o, W, r을 출력 6 | 7 | print(a[7:]) # 문자 o, r, l, d를 출력 8 | 9 | print(a[:3]) # 문자 H, e, l을 출력 10 | -------------------------------------------------------------------------------- /Chapter24/file_24_2_5c.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | p = 1 4 | 5 | i = 1 6 | if i <= n: 7 | while True: 8 | a = float(input()) 9 | p = p * a 10 | 11 | i += 1 12 | if i > n: break 13 | 14 | print(p) 15 | -------------------------------------------------------------------------------- /Chapter29/file_29_2_1b.py: -------------------------------------------------------------------------------- 1 | x = int(input("한 자릿수 정수(0 - 9)를 입력하여라: ")) 2 | 3 | for i in range(100, 1000): 4 | digit3, r = divmod(i, 100) 5 | digit2, digit1 = divmod(r, 10) 6 | 7 | if x in [digit1, digit2, digit3]: 8 | print(i) 9 | -------------------------------------------------------------------------------- /Chapter37/file_37_4.py: -------------------------------------------------------------------------------- 1 | def maximum(val1, val2): 2 | m = val1 3 | if val2 > m: 4 | m = val2 5 | return m 6 | 7 | # 메인 코드 8 | a = float(input()) 9 | b = float(input()) 10 | maxim = maximum(a, b) 11 | 12 | print(maxim) 13 | -------------------------------------------------------------------------------- /Chapter38/file_38_2a.py: -------------------------------------------------------------------------------- 1 | def display_line(): 2 | print("-----------------------------") 3 | 4 | # 메인 코드 5 | print("안녕하세요!") 6 | display_line() 7 | print("어떻게 지내세요?") 8 | display_line() 9 | print("당신의 이름은 무엇입니까?") 10 | display_line() 11 | -------------------------------------------------------------------------------- /Chapter31/file_31_4_3b.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 100 2 | 3 | values = [None] * ELEMENTS 4 | 5 | for i in range(ELEMENTS): 6 | values[i] = int(input()) 7 | 8 | for i in range(1, ELEMENTS, 2): 9 | if values[i] % 2 == 0: 10 | print(values[i]) -------------------------------------------------------------------------------- /Chapter31/file_31_4_4a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 50 2 | 3 | values = [None] * ELEMENTS 4 | for i in range(ELEMENTS): 5 | values[i] = float(input()) 6 | 7 | total = 0 8 | for i in range(ELEMENTS): 9 | total = total + values[i] 10 | 11 | print(total) -------------------------------------------------------------------------------- /Chapter13/file_13_1_2f.py: -------------------------------------------------------------------------------- 1 | number = int(input("다섯 자리 정수를 입력하여라: ")) 2 | 3 | r, digit5 = divmod(number, 10) 4 | r, digit4 = divmod(r, 10) 5 | r, digit3 = divmod(r, 10) 6 | digit1, digit2 = divmod(r, 10) 7 | 8 | print(digit1, digit2, digit3, digit4, digit5) 9 | -------------------------------------------------------------------------------- /Chapter18/file_18_1.py: -------------------------------------------------------------------------------- 1 | name = input("이름이 무엇인가요?") 2 | 3 | if name == "홍길동": 4 | print("나의 삼촌이군요!") 5 | elif name == "김영희": 6 | print("나의 누나군요!") 7 | elif name == "김영숙": 8 | print("나의 엄마군요!") 9 | else: 10 | print("죄송하지만 나는 당신을 모릅니다.") 11 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_5.py: -------------------------------------------------------------------------------- 1 | s = 0 2 | count = 0 3 | for i in range(100): 4 | x = float(input()) 5 | if x > 0: 6 | s = s + x 7 | count += 1 8 | 9 | if count != 0: 10 | print(s / count) 11 | else: 12 | print("숫자가 입력되지 않습니다!") 13 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_5b.py: -------------------------------------------------------------------------------- 1 | CITIES = 10 2 | DAYS = 31 3 | 4 | # 입력받은 값을 리스트 t에 저장한다. 5 | t = [ [None] * DAYS for i in range(CITIES) ] 6 | for i in range(CITIES): 7 | for j in range(DAYS): 8 | t[i][j] = int(input()) 9 | 10 | print(min(t)) -------------------------------------------------------------------------------- /Chapter39/file_39_5a.py: -------------------------------------------------------------------------------- 1 | def prepend_title(name, title = "Mr."): 2 | return title + " " + name 3 | 4 | # 메인 코드 5 | 6 | # Mr. John King 출력 7 | print(prepend_title("John King")) 8 | 9 | # Ms. Maria Miller 출력 10 | print(prepend_title("Maria Miller", "Ms.")) -------------------------------------------------------------------------------- /Chapter39/file_39_8.py: -------------------------------------------------------------------------------- 1 | def factorial(value): 2 | if value == 1: 3 | return_value = 1 4 | else: 5 | return_value = value * factorial(value - 1) 6 | 7 | return return_value 8 | 9 | # 메인 코드 10 | print(factorial(5)) # 120 출력 11 | -------------------------------------------------------------------------------- /Chapter39/file_39_8_1.py: -------------------------------------------------------------------------------- 1 | def Fib(n): 2 | if n == 0 or n == 1: 3 | return_value = n 4 | else: 5 | return_value = Fib(n - 1) + Fib(n - 2) 6 | 7 | return return_value 8 | 9 | # 메인 코드 10 | num = int(input()) 11 | print(Fib(num)) 12 | -------------------------------------------------------------------------------- /Chapter11/file_11_2j.py: -------------------------------------------------------------------------------- 1 | # [1, 2, 3, 4, 5]를 변수 a에 할당 2 | a = range(1, 6) 3 | 4 | # [0, 1, 2, 3, 4, 5]를 변수 b에 할당 5 | b = range(6) 6 | 7 | # [0, 10, 20, 30, 40]를 변수 c에 할당 8 | c = range(0, 50, 10) 9 | 10 | # [100, 95, 90, 85]를 변수 d에 할당 11 | d = range(100, 80, -5) -------------------------------------------------------------------------------- /Chapter27/file_27_4a.py: -------------------------------------------------------------------------------- 1 | s = "I have a dream" 2 | 3 | letter = input("검색할 영문자를 입력하여라: ") 4 | 5 | found = False 6 | for a in s: 7 | if a == letter: 8 | found = True 9 | break 10 | 11 | if found == True: 12 | print("문자 ", letter, "를 찾았습니다.") -------------------------------------------------------------------------------- /Chapter39/file_39_3c.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 10 2 | 3 | def display(b): 4 | for i in range(ELEMENTS): 5 | print(b[i], end = "\t") 6 | 7 | # 메인 코드 8 | a = [None] * ELEMENTS 9 | for i in range(ELEMENTS): 10 | a[i] = int(input()) 11 | 12 | display(a) 13 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_5a.py: -------------------------------------------------------------------------------- 1 | x = int(input("1보다 큰 정수를 입력하여라: ")) 2 | 3 | number_of_divisors = 2 4 | for i in range(2, x // 2 + 1): 5 | if x % i == 0: 6 | number_of_divisors += 1 7 | 8 | if number_of_divisors == 2: 9 | print("숫자", x, "은/는 소수입니다.") 10 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_7c.py: -------------------------------------------------------------------------------- 1 | ROWS = 30 2 | COLUMNS = 20 3 | 4 | a = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | a[i][j] = float(input()) 9 | 10 | for row in a: 11 | print(min(row), max(row)) -------------------------------------------------------------------------------- /Chapter35/file_35_6_2a.py: -------------------------------------------------------------------------------- 1 | DAYS = 31 2 | 3 | t = [None] * DAYS 4 | 5 | for i in range(DAYS): 6 | t[i] = int(input()) 7 | 8 | count = 0 9 | for i in range(DAYS): 10 | if t[i] < 2: 11 | count += 1 12 | 13 | if count != 0: 14 | print("강설 가능성이 있습니다.") -------------------------------------------------------------------------------- /Chapter39/file_39_2.py: -------------------------------------------------------------------------------- 1 | def add(number1, number2): 2 | result = number1 + number2 3 | return result 4 | 5 | def display_sum(num1, num2): 6 | print(add(num1, num2)) 7 | 8 | # 메인 코드 9 | a = int(input()) 10 | b = int(input()) 11 | 12 | display_sum(a, b) 13 | -------------------------------------------------------------------------------- /Chapter22/file_22_2_2.py: -------------------------------------------------------------------------------- 1 | x = float(input()) 2 | 3 | if x >= 0: 4 | if x == 0 or x == 3: 5 | print("오류: 0-나눗셈") 6 | else: 7 | y = (7 + x) / (x - 3) + (3 - x) / x 8 | print(y) 9 | else: 10 | y = 40 * x / (x - 5) + 3 11 | print(y) 12 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_10.py: -------------------------------------------------------------------------------- 1 | while True: 2 | print("두 개의 숫자를 입력하여라: ") 3 | a = int(input()) 4 | b = int(input()) 5 | 6 | result = a ** b 7 | print("결과: ", result) 8 | 9 | answer = input("반복하시겠습니까? ") 10 | if answer.upper() != "YES": break 11 | -------------------------------------------------------------------------------- /Chapter17/file_17_1_5.py: -------------------------------------------------------------------------------- 1 | pay_rate = float(input()) 2 | hours_worked = int(input()) 3 | 4 | if hours_worked <= 40: 5 | gross_pay = pay_rate * hours_worked 6 | else: 7 | gross_pay = pay_rate * 40 + 1.5 * pay_rate * (hours_worked - 40) 8 | 9 | print("급여:", gross_pay) 10 | -------------------------------------------------------------------------------- /Chapter35/file_35_6_2b.py: -------------------------------------------------------------------------------- 1 | DAYS = 31 2 | 3 | t = [None] * DAYS 4 | 5 | for i in range(DAYS): 6 | t[i] = int(input()) 7 | 8 | found = False 9 | for i in range(DAYS): 10 | if t[i] < 2: 11 | found = True 12 | 13 | if found == True: 14 | print("강설 가능성이 있습니다.") -------------------------------------------------------------------------------- /Chapter37/file_37_2d.py: -------------------------------------------------------------------------------- 1 | def get_fullname(): 2 | first_name = input("영문 성을 입력하여라: ") 3 | last_name = input("영문 이름을 입력하여라: ") 4 | return first_name, last_name 5 | 6 | # 메인 코드 7 | fname, lname = get_fullname() 8 | print("영문 성:", fname) 9 | print("영문 이름:", lname) 10 | -------------------------------------------------------------------------------- /Chapter38/file_38_3.py: -------------------------------------------------------------------------------- 1 | def add_and_display ( n1, n2, n3, n4 ): 2 | result = n1 + n2 + n3 + n4 3 | print(result) 4 | 5 | 6 | # 메인 코드 7 | a = float(input()) 8 | b = float(input()) 9 | c = float(input()) 10 | d = float(input()) 11 | add_and_display ( a, b, c, d ) 12 | -------------------------------------------------------------------------------- /Chapter11/file_11_2i.py: -------------------------------------------------------------------------------- 1 | import random # random 모듈을 임포트한다. 2 | 3 | # 0과 65535 사이의 랜덤 정수를 출력한다. 4 | print(random.randrange(0, 65536)) 5 | 6 | # 0과 10 사이의 랜덤 정수를 출력한다. 7 | print(random.randrange(11)) 8 | 9 | # -20과 20 사이의 랜덤 정수를 출력한다. 10 | print(random.randrange(-20, 21)) 11 | -------------------------------------------------------------------------------- /Chapter13/file_13_1_2a.py: -------------------------------------------------------------------------------- 1 | number = int(input("네 자리 정수를 입력하여라: ")) 2 | 3 | digit1 = number // 1000 4 | r = number % 1000 5 | 6 | digit2 = r // 100 7 | r = r % 100 8 | 9 | digit3 = r // 10 10 | digit4 = r % 10 11 | 12 | total = digit1 + digit2 + digit3 + digit4 13 | print(total) -------------------------------------------------------------------------------- /Chapter13/file_13_1_2d.py: -------------------------------------------------------------------------------- 1 | number = int(input("네 자리 정수를 입력하여라: ")) 2 | 3 | digit4 = number % 10 4 | r = number // 10 5 | 6 | digit3 = r % 10 7 | r = r // 10 8 | 9 | digit2 = r % 10 10 | digit1 = r // 10 11 | 12 | total = digit1 + digit2 + digit3 + digit4 13 | print(total) 14 | -------------------------------------------------------------------------------- /Chapter22/file_22_1_1.py: -------------------------------------------------------------------------------- 1 | n1 = int(input("첫 번째 정수를 입력하여라: ")) 2 | n2 = int(input("두 번째 정수를 입력하여라: ")) 3 | 4 | if n1 % 2 == 0 and n2 % 2 == 0: 5 | print("두 수 모두 짝수입니다.") 6 | elif n1 % 2 != 0 and n2 % 2 != 0: 7 | print("두 수 모두 홀수입니다.") 8 | else: 9 | print("특별하지 않네요!") 10 | -------------------------------------------------------------------------------- /Chapter29/file_29_2_1c.py: -------------------------------------------------------------------------------- 1 | x = int(input("한 자릿수 정수(0 - 9)를 입력하여라: ")) 2 | 3 | for digit3 in range(1, 10): 4 | for digit2 in range(10): 5 | for digit3 in range(10): 6 | if x in [digit1, digit2, digit3]: 7 | print(digit3 * 100 + digit2 * 10 + digit1) 8 | -------------------------------------------------------------------------------- /Chapter38/file_38_2b.py: -------------------------------------------------------------------------------- 1 | def display_line(length): 2 | for i in range(length): 3 | print("-", end = "") 4 | print() 5 | 6 | # 메인 코드 7 | print("안녕하세요!") 8 | display_line(12) 9 | print("어떻게 지내세요?") 10 | display_line(14) 11 | print("당신의 이름은 무엇입니까?") 12 | display_line(18) -------------------------------------------------------------------------------- /Chapter19/file_19_1.py: -------------------------------------------------------------------------------- 1 | x = int(input("숫자를 입력하여라: ")) 2 | 3 | if x < 1 or x > 3: 4 | print("올바르지 않은 값입니다.") 5 | else: 6 | if x == 1: 7 | print("1을 입력하였습니다") 8 | elif x == 2: 9 | print("2을 입력하였습니다") 10 | elif x == 3: 11 | print("3을 입력하였습니다") 12 | -------------------------------------------------------------------------------- /Chapter29/file_29_3_1.py: -------------------------------------------------------------------------------- 1 | import math 2 | import re 3 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 4 | 5 | while True: 6 | inp = input("음수가 아닌 숫자를 입력하여라: ") 7 | if re.match(IS_NUMERIC, inp) and float(inp) >= 0: break 8 | 9 | x = float(inp) 10 | 11 | y = math.sqrt(x) 12 | print(y) 13 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_5b.py: -------------------------------------------------------------------------------- 1 | x = int(input("1보다 큰 정수를 입력하여라: ")) 2 | 3 | number_of_divisors = 2 4 | for i in range(2, x // 2 + 1): 5 | if x % i == 0: 6 | number_of_divisors += 1 7 | break 8 | 9 | if number_of_divisors == 2: 10 | print("숫자", x, "은/는 소수입니다.") 11 | -------------------------------------------------------------------------------- /Chapter11/file_11_2e.py: -------------------------------------------------------------------------------- 1 | print(max(5, 3, 2, 6, 7, 1, 5)) # 출력: 7 2 | 3 | a = 5 4 | b = 6 5 | c = 3 6 | d = 4 7 | y = max(a, b, c, d) 8 | print(y) # 출력: 6 9 | 10 | seq = [2, 8, 4, 6, 2] # 정수 시퀀스 11 | print(max(seq)) # 출력: 8 12 | -------------------------------------------------------------------------------- /Chapter11/file_11_2f.py: -------------------------------------------------------------------------------- 1 | print(min(5, 3, 2, 6, 7, 1, 5)) # 출력: 1 2 | 3 | a = 5 4 | b = 6 5 | c = 3 6 | d = 4 7 | y = min(a, b, c, d) 8 | print(y) # 출력: 3 9 | 10 | seq = [2, 8, 4, 6, 2] # 정수 시퀀스 11 | print(min(seq)) # 출력: 2 12 | -------------------------------------------------------------------------------- /Chapter29/file_29_2_1a.py: -------------------------------------------------------------------------------- 1 | x = int(input("한 자릿수 정수(0 - 9)를 입력하여라: ")) 2 | 3 | for i in range(100, 1000): 4 | digit3 = i // 100 5 | r = i % 100 6 | 7 | digit2 = r // 10 8 | digit1 = r % 10 9 | 10 | if digit3 == x or digit2 == x or digit1 == x: 11 | print(i) 12 | -------------------------------------------------------------------------------- /Chapter32/file_32_6_1b.py: -------------------------------------------------------------------------------- 1 | N = 10 2 | a = [[None] * N for i in range(N)] 3 | 4 | for i in range(N): 5 | for j in range(N): 6 | a[i][j] = float(input()) 7 | 8 | # total 계산 9 | total = 0 10 | for k in range(N): 11 | total = total + a[k][k] 12 | 13 | print("총합:", total) 14 | -------------------------------------------------------------------------------- /Chapter13/file_13_1_3.py: -------------------------------------------------------------------------------- 1 | number = int(input("경과 시간(초)을 입력하여라: ")) 2 | 3 | days, r = divmod(number, 86400) # 60 * 60 * 24 = 86400 4 | hours, r = divmod(r, 3600) # 60 * 60 = 3600 5 | minutes, seconds = divmod(r, 60) 6 | 7 | print(days, "일 ", hours, "시간 ") 8 | print(minutes, "분 ", seconds, "초") 9 | -------------------------------------------------------------------------------- /Chapter14/file_14_4i.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | a = "753" 5 | print(re.match(IS_NUMERIC, a)) # True로 간주됨. 6 | 7 | a = "-753.6" 8 | print(re.match(IS_NUMERIC, a)) # True로 간주됨. 9 | 10 | a = "Hello" 11 | print(re.match(IS_NUMERIC, a)) # False로 간주됨. 12 | -------------------------------------------------------------------------------- /Chapter11/file_11_2_1b.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | print("점 A의 좌표를 입력하여라: ") 4 | x1 = float(input()) 5 | y1 = float(input()) 6 | 7 | print("점 B의 좌표를 입력하여라: ") 8 | x2 = float(input()) 9 | y2 = float(input()) 10 | 11 | d = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) 12 | 13 | print("두 점 사이의 거리:", d) 14 | -------------------------------------------------------------------------------- /Chapter11/file_11_2d.py: -------------------------------------------------------------------------------- 1 | a = 5.4 2 | 3 | print(int(a)) # 출력: 5 4 | print(int(34)) # 출력: 34 5 | print(int(34.9)) # 출력: 34 6 | print(int(-34.999)) # 출력: -34 7 | 8 | b = "15" 9 | c = "3" 10 | print(b + c) # 출력: 153 11 | print(int(b) + int(c)) # 출력: 18 12 | -------------------------------------------------------------------------------- /Chapter14/file_14_4_a.py: -------------------------------------------------------------------------------- 1 | number = int(input("정수를 입력하여라: ")) 2 | 3 | # 숫자를 문자열로 바꾼다. 4 | number_string = str(number) 5 | 6 | # 문자열을 역순으로 바꾼다. 7 | reversed_string = number_string[::-1] 8 | 9 | # 역순으로 바꿔진 문자열을 정수로 바꾼다. 10 | reversed_number = int(reversed_string) 11 | 12 | print(reversed_number) 13 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_6.py: -------------------------------------------------------------------------------- 1 | count_a = 0 2 | count_b = 0 3 | 4 | for i in range(10): 5 | a = int(input("첫 번째 숫자를 입력하여라: ")) 6 | b = int(input("두 번째 숫자를 입력하여라: ")) 7 | 8 | if a > b: 9 | count_a += 1 10 | elif b > a: 11 | count_b += 1 12 | 13 | print(count_a, count_b) 14 | -------------------------------------------------------------------------------- /Chapter37/file_37_2c.py: -------------------------------------------------------------------------------- 1 | def display(color, exists): 2 | neg = "이 있다." 3 | if exists == False: 4 | neg = "은 없다." 5 | 6 | return "무지기에" + color + neg 7 | 8 | # 메인 코드가 여기서 시작된다. 9 | print(display("빨간색", True)) 10 | print(display("노란색", True)) 11 | print(display("검은색", False)) 12 | -------------------------------------------------------------------------------- /Chapter13/file_13_1_2c.py: -------------------------------------------------------------------------------- 1 | number = int(input("여섯 자리 정수를 입력하여라: ")) 2 | 3 | digit1, r = divmod(number, 100000) 4 | digit2, r = divmod(r, 10000) 5 | digit3, r = divmod(r, 1000) 6 | digit4, r = divmod(r, 100) 7 | digit5, digit6 = divmod(r, 10) 8 | 9 | print(digit1, digit2, digit3, digit4, digit5, digit6) 10 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_5c.py: -------------------------------------------------------------------------------- 1 | x = int(input("1보다 큰 정수를 입력하여라: ")) 2 | 3 | number_of_divisors = 2 4 | i = 2 5 | while i <= x // 2 and number_of_divisors == 2: 6 | if x % i == 0: 7 | number_of_divisors += 1 8 | i += 1 9 | 10 | if number_of_divisors == 2: 11 | print("숫자", x, "은/는 소수입니다.") 12 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_7.py: -------------------------------------------------------------------------------- 1 | price_before_discount = float(input("상품 가격을 입력하여라: ")) 2 | 3 | discount = int(input("할인율을 입력하여라(0 - 100): ")) 4 | 5 | discount_amount = price_before_discount * discount / 100 6 | price_after_discount = price_before_discount - discount_amount 7 | 8 | print("최종 상품 가격:", price_after_discount) 9 | -------------------------------------------------------------------------------- /Chapter13/file_13_1_2e.py: -------------------------------------------------------------------------------- 1 | number = int(input("다섯 자리 정수를 입력하여라: ")) 2 | 3 | digit5 = number % 10 4 | r = number // 10 5 | 6 | digit4 = r % 10 7 | r = r // 10 8 | 9 | digit3 = r % 10 10 | r = r // 10 11 | 12 | digit2 = r % 10 13 | digit1 = r // 10 14 | 15 | print(digit1, digit2, digit3, digit4, digit5) 16 | -------------------------------------------------------------------------------- /Chapter13/file_13_1_4.py: -------------------------------------------------------------------------------- 1 | number = int(input("세 자리 정수를 입력하여라: ")) 2 | 3 | digit3 = number % 10 # 가장 오른쪽 자릿수값 4 | r = number // 10 5 | 6 | digit2 = r % 10 # 중간 자릿수값 7 | digit1 = r // 10 # 가장 왼쪽 자릿수값 8 | 9 | reversed_number = digit3 * 100 + digit2 * 10 + digit1 10 | print(reversed_number) 11 | -------------------------------------------------------------------------------- /Chapter25/file_25_2_5.py: -------------------------------------------------------------------------------- 1 | n = int(input("입력할 정수의 개수를 입력하여라: ")) 2 | 3 | total = 0 4 | for i in range(n): 5 | a = float(input(str(i + 1) + "번째 정수를 입력하여라: ")) 6 | total = total + a 7 | 8 | if n > 0: 9 | average = total / n 10 | print("평균:", average) 11 | else: 12 | print("입력된 정수가 없습니다.") 13 | -------------------------------------------------------------------------------- /Chapter27/file_27_4b.py: -------------------------------------------------------------------------------- 1 | s = "I have a dream" 2 | 3 | letter = input("검색할 영문자를 입력하여라: ") 4 | 5 | found = False 6 | i = 0 7 | while i <= len(s) - 1 and found == False: 8 | if s[i] == letter: 9 | found = True 10 | i += 1 11 | 12 | if found == True: 13 | print("문자", letter, "를 찾았습니다.") 14 | -------------------------------------------------------------------------------- /Chapter29/file_29_1_7.py: -------------------------------------------------------------------------------- 1 | count1 = 0 2 | count2 = 0 3 | count3 = 0 4 | 5 | for i in range(20): 6 | a = int(input("숫자를 입력하여라: ")) 7 | 8 | if a <= 9: 9 | count1 += 1 10 | elif a <= 99: 11 | count2 += 1 12 | else: 13 | count3 += 1 14 | 15 | print(count1, count2, count3) 16 | -------------------------------------------------------------------------------- /Chapter32/file_32_6_2.py: -------------------------------------------------------------------------------- 1 | N = 5 2 | a = [ [None] * N for i in range(N) ] 3 | 4 | for i in range(N): 5 | for j in range(N): 6 | a[i][j] = float(input()) 7 | 8 | # total 계산 9 | total = 0 10 | for i in range(N): 11 | j = N - i - 1 12 | total = total + a[i][j] 13 | 14 | print("총합:", total) 15 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_1a.py: -------------------------------------------------------------------------------- 1 | LAKES = 20 2 | 3 | depths = [None] * LAKES 4 | for i in range(LAKES): 5 | depths[i] = float(input()) 6 | 7 | # 초깃값 8 | maximum = depths[0] 9 | # 위치 1부터 검색한다. 10 | for i in range(1, LAKES): 11 | if depths[i] > maximum: 12 | maximum = depths[i] 13 | 14 | print(maximum) -------------------------------------------------------------------------------- /Chapter29/file_29_6_4d.py: -------------------------------------------------------------------------------- 1 | message = input("메시지를 입력하여라: ").lower() 2 | 3 | # 공백, 쉼표, 구두점, 물음표를 제외한 모든 문자를 포함하고 있는 4 | # 새로운 문자열을 생성 5 | message_clean = message 6 | for c in " ,.?": 7 | message_clean = message_clean.replace(c, "") 8 | 9 | if message_clean == message_clean[::-1]: 10 | print("이 메시지는 회문입니다.") 11 | -------------------------------------------------------------------------------- /Chapter22/file_22_1_3.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input("숫자를 입력하여라: ") 5 | 6 | if re.match(IS_NUMERIC, inp): 7 | x = float(inp) 8 | if x == int(x): 9 | print(x, "은/는 정수입니다.") 10 | else: 11 | print(x, "은/는 실수입니다.") 12 | else: 13 | print("숫자가 아닙니다.") 14 | -------------------------------------------------------------------------------- /Chapter38/file_38_4.py: -------------------------------------------------------------------------------- 1 | def minimum(val1, val2, val3): 2 | minim = val1 3 | if val2 < minim: 4 | minim = val2 5 | if val3 < minim: 6 | minim = val3 7 | print(minim) 8 | 9 | # 메인 코드 10 | a = float(input()) 11 | b = float(input()) 12 | c = float(input()) 13 | minimum(a, b, c) 14 | print("끝") 15 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_1b.py: -------------------------------------------------------------------------------- 1 | import math 2 | ELEMENTS_OF_A = 100 3 | 4 | a = [None] * ELEMENTS_OF_A 5 | for i in range(ELEMENTS_OF_A): 6 | a[i] = float(input()) 7 | 8 | new_arr = [] 9 | for i in range(ELEMENTS_OF_A - 2): 10 | new_arr.append(math.fsum(a[i:i + 3]) / 3) 11 | 12 | for element in new_arr: 13 | print(element) -------------------------------------------------------------------------------- /Chapter11/file_11_2_1a.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | print("점 A의 좌표를 입력하여라: ") 4 | x1 = float(input()) 5 | y1 = float(input()) 6 | 7 | print("점 B의 좌표를 입력하여라: ") 8 | x2 = float(input()) 9 | y2 = float(input()) 10 | 11 | x_temp = (x1 - x2) ** 2 12 | y_temp = (y1 - y2) ** 2 13 | 14 | d = math.sqrt(x_temp + y_temp) 15 | print("두 점 사이의 거리:", d) 16 | -------------------------------------------------------------------------------- /Chapter29/file_29_3_2.py: -------------------------------------------------------------------------------- 1 | import math 2 | import re 3 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 4 | 5 | inp = input("음수가 아닌 숫자를 입력하여라: ") 6 | while not re.match(IS_NUMERIC, inp) or float(inp) < 0: 7 | print("오류: 올바르지 않은 입력값입니다.") 8 | inp = input("음수가 아닌 숫자를 입력하여라: ") 9 | 10 | x = float(inp) 11 | 12 | y = math.sqrt(x) 13 | print(y) 14 | -------------------------------------------------------------------------------- /Chapter22/file_22_1_6.py: -------------------------------------------------------------------------------- 1 | v = input().upper() 2 | 3 | if v == "M": #대문자 M으로만 검사 4 | print("1000원을 지불해야 합니다.") 5 | elif v == "C": #대문자 C으로만 검사 6 | print("2000원을 지불해야 합니다.") 7 | elif v == "T": #대문자 T으로만 검사 8 | print("4000원을 지불해야 합니다.") 9 | else: 10 | print("차량 정보가 올바르지 않습니다.") 11 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_3b.py: -------------------------------------------------------------------------------- 1 | m1 = int(input()) 2 | m2 = int(input()) 3 | 4 | s = 0 5 | while m2 != 0: 6 | if m2 % 2 != 0: 7 | s += m1 8 | 9 | m1 = m1 << 1 # m1 *= 2와 동일 10 | # m1의 비트들을 왼쪽으로 한 번의 시프트 11 | m2 = m2 >> 1 # m2 //= 2와 동일 12 | # m2의 비트들을 오른쪽으로 한 번의 시프트 13 | print(s) 14 | -------------------------------------------------------------------------------- /Chapter22/file_22_1_2.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input("정수를 입력하여라: ") 5 | 6 | if re.match(IS_NUMERIC, inp): 7 | x = int(inp) 8 | if x % 5 == 0 and x % 8 == 0: 9 | print(x, "5와 8로 나누어떨어집니다.") 10 | else: 11 | print(x, "은/는 당신이 찾는 숫자가 아닙니다.") 12 | else: 13 | print("숫자가 아닙니다.") 14 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_8.py: -------------------------------------------------------------------------------- 1 | ACCURACY = 0.00001 2 | 3 | pi = 0 4 | 5 | sign = 1 # 첫 번째 분수의 부호 6 | denom = 1 # 첫 번째 분수의 분모 7 | while True: 8 | pi_previous = pi 9 | pi += sign * 4 / denom 10 | sign = -sign 11 | denom += 2 12 | if abs(pi - pi_previous) <= ACCURACY: break # 충분히 가까운가? 13 | 14 | print("Pi ~=", pi) 15 | -------------------------------------------------------------------------------- /Chapter32/file_32_6_1a.py: -------------------------------------------------------------------------------- 1 | N = 10 2 | a = [ [None] * N for i in range(N) ] 3 | 4 | for i in range(N): 5 | for j in range(N): 6 | a[i][j] = float(input()) 7 | 8 | # total 계산 9 | total = 0 10 | for i in range(N): 11 | for j in range(N): 12 | if i == j: 13 | total = total + a[i][j] 14 | 15 | print("총합:", total) 16 | -------------------------------------------------------------------------------- /Chapter12/file_12_1_3a.py: -------------------------------------------------------------------------------- 1 | x = float(input("x 값을 입력하여라: ")) 2 | w = float(input("w 값을 입력하여라: ")) 3 | z = float(input("z 값을 입력하여라: ")) 4 | 5 | temp1 = 3 * x ** 2 + 5 * x + 2 6 | temp2 = 7 * w - 1 / z 7 | temp3 = (3 + x) / 7 8 | nominator = 5 * temp1 / temp2 - z 9 | denominator = 4 * temp3 10 | 11 | y = nominator / denominator 12 | 13 | print("결과:", y) 14 | -------------------------------------------------------------------------------- /Chapter22/file_22_5_1.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input("연도를 입력하여라: ") 5 | 6 | if not re.match(IS_NUMERIC, inp): 7 | print("입력한 값은 숫자가 아닙니다.") 8 | else: 9 | y = int(inp) 10 | if y % 4 == 0 and y % 100 != 0 or y % 400 == 0: 11 | print("윤년입니다.") 12 | else: 13 | print("윤년이 아닙니다.") 14 | -------------------------------------------------------------------------------- /Chapter39/file_39_6e.py: -------------------------------------------------------------------------------- 1 | def display_values(): 2 | a = 7 3 | b = 3 4 | print(a, b) # 7 3 출력 5 | 6 | def display_other_values(): 7 | a = 9 8 | b = 2 9 | print(a, b) # 9 2 출력 10 | 11 | # 메인 코드 12 | a = 10 13 | print(a) # 10 출력 14 | display_values() 15 | display_other_values() 16 | print(a) # 10 출력 17 | -------------------------------------------------------------------------------- /Chapter29/file_29_3_4.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | total = 0 5 | for i in range(10): 6 | inp = input("숫자를 입력하여라: ") 7 | while not re.match(IS_NUMERIC, inp): 8 | print("숫자를 입력하시오!") 9 | inp = input("숫자를 입력하여라: ") 10 | 11 | a = float(inp) 12 | 13 | total = total + a 14 | 15 | print(total) 16 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_6b.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 100 2 | 3 | a = [None] * ELEMENTS 4 | for i in range(ELEMENTS): 5 | a[i] = int(input()) 6 | 7 | b = [] 8 | for element in a: 9 | first_digit, last_digit = divmod(element, 10) 10 | if 5 in [first_digit, last_digit]: 11 | b.append(element) 12 | 13 | for element in b: 14 | print(element, end = "\t") -------------------------------------------------------------------------------- /Chapter22/file_22_4_5.py: -------------------------------------------------------------------------------- 1 | kwh = int(input("전력 소비량을 입력하여라(kWh): ")) 2 | 3 | if kwh <= 500: 4 | t = kwh * 100 5 | elif kwh <= 2000: 6 | t = 500 * 100 + (kwh - 500) * 250 7 | elif kwh <= 4000: 8 | t = 500 * 100 + 1500 * 250 + (kwh - 2000) * 400 9 | else: 10 | t = 500 * 100 + 1500 * 250 + 2000 * 400 + (kwh - 4000) * 600 11 | 12 | print("지불 총금액:", t) 13 | -------------------------------------------------------------------------------- /Chapter29/file_29_5_3.py: -------------------------------------------------------------------------------- 1 | maximum = -1 2 | count = 0 3 | 4 | for i in range(20): 5 | while True: 6 | grade = int(input("학생 번호 " + str(i + 1) + "의 점수을 입력하여라: ")) 7 | if 0 <= grade <= 100: break 8 | 9 | if grade > maximum: 10 | maximum = grade 11 | 12 | if grade >= 90: 13 | count += 1 14 | 15 | print(maximum, count) 16 | -------------------------------------------------------------------------------- /Chapter33/file_33_7_b.py: -------------------------------------------------------------------------------- 1 | a = [3, 6, 10, 2, 1, 12, 4] 2 | 3 | print(max(a)) # 출력: 12 4 | 5 | maximum = max(a[1:4]) 6 | print(maximum) # 출력: 10 7 | 8 | b = [ [4, 6, 8], \ 9 | [3, 11, 9], \ 10 | [2, 9, 1] 11 | ] 12 | 13 | print(max(b[1])) # 출력: 11 14 | 15 | c = ["Apollo", "Hermes", "Athena", "Aphrodite", "Dionysus"] 16 | print(max(c)) # 출력: Hermes -------------------------------------------------------------------------------- /Chapter33/file_33_7_c.py: -------------------------------------------------------------------------------- 1 | a = [3, 6, 10, 2, 1, 12, 4] 2 | 3 | print(min(a)) # 출력: 1 4 | 5 | minimum = min(a[1:4]) 6 | print(minimum) # 출력: 2 7 | 8 | b = [ [4, 6, 8], \ 9 | [3, 11, 9], \ 10 | [2, 9, 1] 11 | ] 12 | 13 | print(min(b[0])) # 출력: 4 14 | 15 | c = ["Apollo", "Hermes", "Athena", "Aphrodite", "Dionysus"] 16 | print(min(c)) # 출력: Aphrodite -------------------------------------------------------------------------------- /Chapter35/file_35_4_1.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 20 2 | 3 | a = [None] * ELEMENTS 4 | 5 | for i in range(ELEMENTS): 6 | a[i] = float(input()) 7 | 8 | for m in range(ELEMENTS - 1): 9 | for n in range(ELEMENTS - 1, m, -1): 10 | if a[n] < a[n - 1]: 11 | a[n], a[n - 1] = a[n - 1], a[n] 12 | 13 | for i in range(ELEMENTS): 14 | print(a[i], end = "\t") -------------------------------------------------------------------------------- /Chapter22/file_22_4_4c.py: -------------------------------------------------------------------------------- 1 | x = float(input("x 값을 입력하여라: ")) 2 | 3 | if x == -1 or x == 9: 4 | print("올바르지 않은 값입니다.") 5 | else: 6 | if x <= -5 or x > 20: 7 | y = abs(x) 8 | elif x <= 0: 9 | y = x / (x - 3) + (8 + x) / (x + 1) 10 | elif x <= 6: 11 | y = 40 * x / (x - 8) 12 | else: 13 | y = 3 * x / (x - 9) 14 | print(y) 15 | -------------------------------------------------------------------------------- /Chapter13/file_13_1_2b.py: -------------------------------------------------------------------------------- 1 | number = int(input("여섯 자리 정수를 입력하여라: ")) 2 | 3 | digit1 = number // 100000 4 | r = number % 100000 5 | 6 | digit2 = r // 10000 7 | r = r % 10000 8 | 9 | digit3 = r // 1000 10 | r = r % 1000 11 | 12 | digit4 = r // 100 13 | r = r % 100 14 | 15 | digit5 = r // 10 16 | digit6 = r % 10 17 | 18 | print(digit1, digit2, digit3, digit4, digit5, digit6) 19 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_4b.py: -------------------------------------------------------------------------------- 1 | x = float(input("x 값을 입력하여라: ")) 2 | 3 | if x == -1 or x == 9: 4 | print("올바르지 않은 값입니다.") 5 | else: 6 | if -5 < x <= 0: 7 | y = x / (x - 3) + (8 + x) / (x + 1) 8 | elif 0 < x <= 6: 9 | y = 40 * x / (x - 8) 10 | elif 6 < x <= 20: 11 | y = 3 * x / (x - 9) 12 | else: 13 | y = abs(x) 14 | print(y) 15 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_7.py: -------------------------------------------------------------------------------- 1 | count = int(input("송신 메시지의 수를 입력하여라: ")) 2 | 3 | if count <= 50: 4 | extra = 0 5 | elif count <= 150: 6 | extra = (count - 50) * 50 7 | else: 8 | extra = 100 * 60 + (count - 150) * 90 9 | 10 | total_without_tax = 80000 + extra 11 | tax = total_without_tax * 10 / 100 12 | total = total_without_tax + tax 13 | print("지불해야 할 총 금액:", total) 14 | -------------------------------------------------------------------------------- /Chapter22/file_22_1_7.py: -------------------------------------------------------------------------------- 1 | a = float(input("첫 번째 피연산자 값을 입력하여라: ")) 2 | op = input("연산자 유형을 입력하여라: ") 3 | b = float(input("두 번째 피연산자 값을 입력하여라: ")) 4 | 5 | if op == "+": 6 | print(a + b) 7 | elif op == "-": 8 | print(a - b) 9 | elif op == "*": 10 | print(a * b) 11 | elif op == "/": 12 | if b == 0: 13 | print("오류: 0-나눗셈") 14 | else: 15 | print(a / b) 16 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_1b.py: -------------------------------------------------------------------------------- 1 | amount = float(input("주문액을 입력하여라: ")) 2 | 3 | if amount < 30000: 4 | discount = 0 5 | elif amount < 70000: 6 | discount = 5 7 | elif amount < 150000: 8 | discount = 10 9 | else: 10 | discount = 20 11 | 12 | payment = amount - amount * discount / 100 13 | 14 | print("할인률: ", discount, "%", sep = "") 15 | print("지불액: ", payment, "원", sep = "") 16 | -------------------------------------------------------------------------------- /Chapter32/file_32_4_2.py: -------------------------------------------------------------------------------- 1 | ROWS = 5 2 | COLUMNS = 7 3 | 4 | a = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | print(i, ",", j, "요솟값을 입력하여라: ") 9 | a[i][j] = float(input()) 10 | 11 | # 열을 따라 반복 처리 12 | for j in range(1, COLUMNS, 2): # 1부터 시작하여 2만큼씩 증가 13 | for i in range(ROWS): 14 | print(a[i][j]) 15 | -------------------------------------------------------------------------------- /Chapter32/file_32_6_3.py: -------------------------------------------------------------------------------- 1 | N = 5 2 | a = [ [None] * N for i in range(N) ] 3 | 4 | for i in range(N): 5 | for j in range(N): 6 | if i == j: 7 | a[i][j] = -1 8 | elif i > j: 9 | a[i][j] = 10 10 | else: 11 | a[i][j] = 20 12 | 13 | for i in range(N): 14 | for j in range(N): 15 | print(a[i][j], end = "\t") 16 | print() -------------------------------------------------------------------------------- /Chapter35/file_35_1_1a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS_OF_A = 100 2 | ELEMENTS_OF_NEW = ELEMENTS_OF_A - 2 3 | 4 | a = [None] * ELEMENTS_OF_A 5 | for i in range(ELEMENTS_OF_A): 6 | a[i] = float(input()) 7 | 8 | new_arr = [None] * ELEMENTS_OF_NEW 9 | for i in range(ELEMENTS_OF_NEW): 10 | new_arr[i] = (a[i] + a[i + 1] + a[i + 2]) / 3 11 | 12 | for i in range(ELEMENTS_OF_NEW): 13 | print(new_arr[i]) -------------------------------------------------------------------------------- /Chapter14/file_14_4_1.py: -------------------------------------------------------------------------------- 1 | full_name = input("당신의 영문 이름을 입력하여라: ") 2 | 3 | # 스페이스 문자의 위치를 찾는다. 또한, 이름에 포함된 문자 개수를 나타낸다. 4 | space_pos = full_name.find(" ") 5 | 6 | # 위치 0에서 space_pos 문자 개수만큼의 부분 문자열을 얻는다. 7 | name1 = full_name[:space_pos] 8 | 9 | # 위치 space_pos + 1에서 마지막까지의 부분 문자열을 얻는다. 10 | name2 = full_name[space_pos + 1:] 11 | 12 | full_name = name2 + " " + name1 13 | print(full_name) 14 | -------------------------------------------------------------------------------- /Chapter18/file_18_1_3.py: -------------------------------------------------------------------------------- 1 | day = int(input("1과 7 사이의 숫자를 입력하여라: ")) 2 | 3 | if day == 1: 4 | print("일요일") 5 | elif day == 2: 6 | print("월요일") 7 | elif day == 3: 8 | print("화요일") 9 | elif day == 4: 10 | print("수요일") 11 | elif day == 5: 12 | print("목요일") 13 | elif day == 6: 14 | print("금요일") 15 | elif day == 7: 16 | print("토요일") 17 | else: 18 | print("부적절한 숫자") 19 | -------------------------------------------------------------------------------- /Chapter11/file_11_2k.py: -------------------------------------------------------------------------------- 1 | a = 5.9 2 | print(round(a)) # 출력: 6 3 | print(round(5.4)) # 출력: 5 4 | 5 | a = 5.312 6 | y = round(a * 10 ** 2) / 10 ** 2 7 | print(y) # 출력: 5.31 8 | 9 | a = 5.315 10 | y = round(a * 10 ** 2) / 10 ** 2 11 | print(y) # 출력: 5.32 12 | print(round(2.3447 * 1000) / 1000) # 출력: 2.345 13 | -------------------------------------------------------------------------------- /Chapter22/file_22_5_2.py: -------------------------------------------------------------------------------- 1 | m = int(input("월을 입력하여라(1 - 12): ")) 2 | y = int(input("연도를 입력하여라: ")) 3 | 4 | if m == 2: 5 | if y % 4 == 0 and y % 100 != 0 or y % 400 == 0: 6 | print("입력한 월은 29일까지 있습니다.") 7 | else: 8 | print("입력한 월은 28일까지 있습니다.") 9 | elif m == 4 or m == 6 or m == 9 or m == 11: 10 | print("입력한 월은 30일까지 있습니다.") 11 | else: 12 | print("입력한 월은 29일까지 있습니다.") 13 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_2.py: -------------------------------------------------------------------------------- 1 | LAKES = 20 2 | 3 | names = [None] * LAKES 4 | depths = [None] * LAKES 5 | 6 | for i in range(LAKES): 7 | names[i] = input() 8 | depths[i] = float(input()) 9 | 10 | maximum = depths[0] 11 | m_name = names[0] 12 | 13 | for i in range(1, LAKES): 14 | if depths[i] > maximum: 15 | maximum = depths[i] 16 | m_name = names[i] 17 | 18 | print(m_name) -------------------------------------------------------------------------------- /Chapter22/file_22_1_4.py: -------------------------------------------------------------------------------- 1 | COEFFICIENT = 3.785 2 | 3 | print("1: 갤런을 리터로 변환하기") 4 | print("2: 리터를 갤런으로 변환하기") 5 | choice = int(input("메뉴를 선택하여라: ")) 6 | quantity = float(input("양을 입력하여라: ")) 7 | 8 | if choice == 1: 9 | result = quantity * COEFFICIENT 10 | print(quantity, "갤런 =", result, "리터") 11 | else: 12 | result = quantity / COEFFICIENT 13 | print(quantity, "리터 =", result, "갤런") 14 | -------------------------------------------------------------------------------- /Chapter14/file_14_4_3a.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | 4 | alphabet = string.ascii_lowercase 5 | 6 | random_word = alphabet[random.randrange(26)] + \ 7 | alphabet[random.randrange(26)] + \ 8 | alphabet[random.randrange(26)] + \ 9 | alphabet[random.randrange(26)] + \ 10 | alphabet[random.randrange(26)] 11 | 12 | print(random_word) 13 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_6.py: -------------------------------------------------------------------------------- 1 | N = int(input("1보다 큰 정수를 입력하여라: ")) 2 | while N < 2: 3 | N = int(input("잘못된 숫자입니다. 1보다 큰 정수를 입력하여라: ")) 4 | 5 | for x in range(1, N + 1): 6 | number_of_divisors = 2 7 | for i in range(2, x // 2 + 1): 8 | if x % i == 0: 9 | number_of_divisors += 1 10 | break 11 | 12 | if number_of_divisors == 2: 13 | print("숫자", x, "은/는 소수입니다.") 14 | -------------------------------------------------------------------------------- /Chapter29/file_29_5_1.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | maximum = -1 5 | 6 | for i in range(10): 7 | inp = input("몸무게값을 입력하여라: ") 8 | while not re.match(IS_NUMERIC, inp) or float(inp) < 0 or float(inp) > 680: 9 | inp = input("부적절한 값! 1과 680 사이의 몸무게값을 입력하여라: ") 10 | 11 | w = int(inp) 12 | 13 | if w > maximum: 14 | maximum = w 15 | 16 | print(maximum) 17 | -------------------------------------------------------------------------------- /Chapter32/file_32_4_1.py: -------------------------------------------------------------------------------- 1 | ROWS = 5 2 | COLUMNS = 7 3 | 4 | a = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | print(i, ",", j, "의 요솟값을 입력하여라: ") 9 | a[i][j] = float(input()) 10 | 11 | for i in range(ROWS): 12 | for j in range(COLUMNS): 13 | if a[i][j] != int(a[i][j]): 14 | print(i, ",", j, "위치에서 실수가 발견되었습니다.") 15 | -------------------------------------------------------------------------------- /Chapter33/file_33_7_e.py: -------------------------------------------------------------------------------- 1 | a = [3, 6, 10, 2, 1, 12, 4] 2 | b = sorted(a) 3 | 4 | for element in a: 5 | print(element, end = " ") # 출력: 3, 6, 10, 2, 1, 12, 4 6 | print() 7 | 8 | for element in b: 9 | print(element, end = " ") # 출력: 1 2 3 4 6 10 12 10 | print() 11 | 12 | c = ["Hermes", "Apollo", "Dionysus"] 13 | for element in sorted(c, reverse = True): 14 | print(element, end = " ") # 출력: Hermes Dionysus Apollo -------------------------------------------------------------------------------- /Chapter35/file_35_3_5a.py: -------------------------------------------------------------------------------- 1 | CITIES = 10 2 | DAYS = 31 3 | 4 | # 입력받은 값을 리스트 t에 저장한다. 5 | t = [ [None] * DAYS for i in range(CITIES) ] 6 | for i in range(CITIES): 7 | for j in range(DAYS): 8 | t[i][j] = int(input()) 9 | 10 | # 최솟값을 찾는다. 11 | minimum = t[0][0] 12 | for i in range(CITIES): 13 | for j in range(DAYS): 14 | if t[i][j] < minimum: 15 | minimum = t[i][j] 16 | 17 | print(minimum) -------------------------------------------------------------------------------- /Chapter39/file_39_4c.py: -------------------------------------------------------------------------------- 1 | def get_list(a): 2 | return sorted(a)[0:3] 3 | 4 | # 메인 코드 5 | names = ["도시1", "도시2", "도시3", "도시4", "도시5", \ 6 | "도시6", "도시7", "도시8", "도시9", "도시10"] 7 | 8 | t = [75, 73, 78, 70, 71, 74, 72, 69, 79, 77] 9 | 10 | low = get_list(t) 11 | print("가장 낮은 온도: ", low[0], low[1], low[2]) 12 | 13 | # 이 단계에서 리스트 t는 정렬되어 있지 않음 14 | for i in range(len(t)): 15 | print(t[i], "\t", names[i]) 16 | -------------------------------------------------------------------------------- /Chapter10/file_10_1_8.py: -------------------------------------------------------------------------------- 1 | VAT = 0.19 2 | 3 | price_before_discount = float(input("상품 가격을 입력하여라: ")) 4 | discount = int(input("할인율을 입력하여라(0 - 100): ")) 5 | 6 | discount_amount = price_before_discount * discount / 100 7 | price_after_discount = price_before_discount - discount_amount 8 | 9 | sales_tax = price_after_discount * VAT 10 | price_after_tax = price_after_discount + sales_tax 11 | 12 | print("최종 상품 가격:", price_after_tax) -------------------------------------------------------------------------------- /Chapter35/file_35_2_1.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 20 2 | 3 | odds = [None] * ELEMENTS 4 | for i in range(ELEMENTS): 5 | while True: 6 | odds[i] = int(input("홀수인 정수를 입력하여라: ")) 7 | if odds[i] % 2 != 0: break 8 | 9 | # 요소를 역순으로 출력 # 또는 다음과 같이 변형 가능 10 | for i in range(ELEMENTS - 1, -1, -1): # for element in odds[::-1]: 11 | print(odds[i], end = "\t") # print(element, end = "\t") 12 | -------------------------------------------------------------------------------- /Chapter39/file_39_3_1a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 5 2 | 3 | def get_num_of_digits(x, index): 4 | count = 0 5 | while x[index] != 0: 6 | count += 1 7 | x[index] = x[index] // 10 8 | return count 9 | 10 | # 메인 코드 11 | val = [None] * ELEMENTS 12 | 13 | for i in range(ELEMENTS): 14 | val[i] = int(input()) 15 | 16 | for i in range(ELEMENTS): 17 | print(get_num_of_digits(val, i), "은/는", val[i], "의 자릿수입니다.") -------------------------------------------------------------------------------- /Chapter41/file_41_1_1.py: -------------------------------------------------------------------------------- 1 | def test_integer(number): 2 | return_value = False 3 | 4 | if number == int(number): 5 | return_value = True 6 | return return_value 7 | 8 | # 메인 코드 9 | total = 0 10 | count = 0 11 | x = float(input()) 12 | while test_integer(x) == True: 13 | if x > 0: 14 | total += x 15 | count += 1 16 | x = float(input()) 17 | 18 | if count > 0: 19 | print(total / count) 20 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_6a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 100 2 | 3 | a = [None] * ELEMENTS 4 | for i in range(ELEMENTS): 5 | a[i] = int(input()) 6 | 7 | b = [None] * ELEMENTS 8 | k = 0 9 | for i in range(ELEMENTS): 10 | last_digit = a[i] % 10 11 | first_digit = a[i] // 10 12 | 13 | if first_digit == 5 or last_digit == 5: 14 | b[k] = a[i] 15 | k += 1 16 | 17 | for i in range(k): 18 | print(b[i], end = "\t") -------------------------------------------------------------------------------- /Chapter35/file_35_1_3c.py: -------------------------------------------------------------------------------- 1 | ELEMENTS_OF_A = 20 2 | ELEMENTS_OF_B = 30 3 | 4 | # 입력받은 값을 리스트 a와 b에 각각 저장한다. 5 | a = [None] * ELEMENTS_OF_A 6 | b = [None] * ELEMENTS_OF_B 7 | for i in range(ELEMENTS_OF_A): 8 | a[i] = float(input()) 9 | for i in range(ELEMENTS_OF_B): 10 | b[i] = float(input()) 11 | 12 | # 리스트 new_arr을 생성한다. 13 | new_arr = a + b 14 | 15 | # 리스트 new_arr을 출력한다. 16 | for element in new_arr: 17 | print(element, end = "\t") -------------------------------------------------------------------------------- /Chapter18/file_18_1_1.py: -------------------------------------------------------------------------------- 1 | a = int(input()) 2 | b = int(input()) 3 | 4 | if a > 3: 5 | print("변수 a는 3보다 큽니다") 6 | elif a > 4 and b <= 10: 7 | print("변수 a는 4보다 크고 ") 8 | print("변수 b는 10보다 작거나 같습니다.") 9 | elif a * 2 == -26: 10 | print("변수 a 곱하기 2는 -26과 같습니다.") 11 | b += 1 12 | elif b == 1: 13 | print("변수 b는 1과 같습니다.") 14 | else: 15 | print("위의 모든 불리언 식이 False일 경우 ") 16 | print("이 메시지가 표시됩니다.") 17 | 18 | print("종료!") 19 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_1a.py: -------------------------------------------------------------------------------- 1 | amount = float(input("주문액을 입력하여라: ")) 2 | 3 | if amount < 30000: 4 | discount = 0 5 | elif amount >= 30000 and amount < 70000: 6 | discount = 5 7 | elif amount >= 70000 and amount < 150000: 8 | discount = 10 9 | elif amount >= 150000: 10 | discount = 20 11 | 12 | payment = amount - amount * discount / 100 13 | 14 | print("할인율: ", discount, "%", sep = "") 15 | print("지불액: ", payment, "원", sep = "") 16 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | The_solved_exercises 4 | 5 | 6 | 7 | 8 | 9 | org.python.pydev.PyDevBuilder 10 | 11 | 12 | 13 | 14 | 15 | org.python.pydev.pythonNature 16 | 17 | 18 | -------------------------------------------------------------------------------- /.pydevproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | /${PROJECT_DIR_NAME} 5 | 6 | python 3.0 7 | Default 8 | 9 | -------------------------------------------------------------------------------- /Chapter22/file_22_5_4a.py: -------------------------------------------------------------------------------- 1 | sentence = input("영어 문장을 입력하여라: ") 2 | 3 | # 첫 번째 문자를 가져온다. 4 | first_char = sentence[0] 5 | 6 | # 마지막 문자를 가져온다. 7 | last_char = sentence[-1] 8 | 9 | sentence_is_okay = True 10 | 11 | if first_char != first_char.upper(): 12 | sentence_is_okay = False 13 | elif last_char != "." and last_char != "?" and last_char != "!": 14 | sentence_is_okay = False 15 | 16 | if sentence_is_okay == True: 17 | print("이상 없음!") 18 | -------------------------------------------------------------------------------- /Chapter14/file_14_4_3b.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | 4 | alphabet = string.ascii_lowercase 5 | 6 | random_word = alphabet[random.randrange(len(alphabet))] + \ 7 | alphabet[random.randrange(len(alphabet))] + \ 8 | alphabet[random.randrange(len(alphabet))] + \ 9 | alphabet[random.randrange(len(alphabet))] + \ 10 | alphabet[random.randrange(len(alphabet))] 11 | 12 | print(random_word) 13 | -------------------------------------------------------------------------------- /Chapter22/file_22_2_3.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input() 5 | 6 | if re.match(IS_NUMERIC, inp): 7 | x = float(inp) 8 | if x >= 0 : 9 | if x == 0 or x == 3: 10 | print("오류: 0-나눗셈") 11 | else: 12 | y = (7 + x) / (x - 3) + (3 - x) / x 13 | print(y) 14 | else: 15 | y = 40 * x / (x - 5) + 3 16 | print(y) 17 | else: 18 | print("숫자가 아닙니다.") 19 | -------------------------------------------------------------------------------- /Chapter35/file_35_2_2.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | ELEMENTS = 20 5 | 6 | odds = [None] * ELEMENTS 7 | for i in range(ELEMENTS): 8 | inp = input("홀수 정수를 입력하여라: ") 9 | while not re.match(IS_NUMERIC, inp) or int(inp) % 2 == 0: 10 | print("부적절한 값!") 11 | inp = input("홀수 정수를 입력하여라: ") 12 | odds[i] = int(inp) 13 | 14 | # 요소를 역순으로 출력 15 | for element in odds[::-1]: 16 | print(element, end = "\t") 17 | -------------------------------------------------------------------------------- /Chapter41/file_41_1_3.py: -------------------------------------------------------------------------------- 1 | def formula1(x): 2 | if x == 5: 3 | print("오류! 0-나눗셈") 4 | else: 5 | y = 3 * x / (x - 5) + (7 - x) / (2 * x) 6 | print(y) 7 | 8 | def formula2(x): 9 | if x == -2: 10 | print("오류! 0-나눗셈") 11 | else: 12 | y = (45 - x) / (x + 2) + 3 * x 13 | print(y) 14 | 15 | # 메인 코드 16 | x = float(input("x 값을 입력하여라: ")) 17 | if x >= 1: 18 | formula1(x) 19 | else: 20 | formula2(x) 21 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_5b.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 100 2 | ar = [None] * ELEMENTS 3 | for i in range(ELEMENTS): 4 | ar[i] = float(input()) 5 | 6 | # 리스트 pos와 neg를 생성한다. 7 | pos = [] 8 | neg = [] 9 | for element in ar: 10 | if element > 0: 11 | pos.append(element) 12 | elif element < 0: 13 | neg.append(element) 14 | 15 | for element in pos: 16 | print(element, end = "\t") 17 | 18 | print() 19 | 20 | for element in neg: 21 | print(element, end = "\t") -------------------------------------------------------------------------------- /Chapter41/file_41_1_4.py: -------------------------------------------------------------------------------- 1 | import random 2 | ELEMENTS = 100 3 | 4 | def dice(): 5 | return random.randrange(1, 7) 6 | 7 | def search_and_count(x, a): 8 | count = 0 9 | for i in range(ELEMENTS): 10 | if a[i] == x: 11 | count += 1 12 | return count 13 | 14 | # 메인 코드 15 | a = [None] * ELEMENTS 16 | for i in range(ELEMENTS): 17 | a[i] = dice() 18 | 19 | x = int(input()) 20 | print("입력한 정수가 리스트에", search_and_count(x, a), "번 나왔습니다.") 21 | -------------------------------------------------------------------------------- /Chapter33/file_33_2_1d.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | STUDENTS = 20 4 | LESSONS = 10 5 | 6 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 7 | 8 | for i in range(STUDENTS): 9 | print("학생 번호:", (i + 1)) 10 | for j in range(LESSONS): 11 | grades[i][j] = int(input(str(j + 1) + "번째 교과목의 점수를 입력하여라: ")) 12 | 13 | # 파이썬만의 강력한 기능을 사용하여 행 단위 평균을 계산 14 | for row in grades: 15 | average = math.fsum(row) / LESSONS 16 | if average > 89: 17 | print(average) 18 | -------------------------------------------------------------------------------- /Chapter39/file_39_3_1b.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 5 2 | 3 | def get_num_of_digits(x, index): 4 | count = 0 5 | 6 | aux_var = x[index] 7 | 8 | while aux_var != 0: 9 | count += 1 10 | aux_var = aux_var // 10 11 | return count 12 | 13 | # 메인 코드 14 | val = [None] * ELEMENTS 15 | 16 | for i in range(ELEMENTS): 17 | val[i] = int(input()) 18 | 19 | for i in range(ELEMENTS): 20 | print(get_num_of_digits(val, i), "은/는", val[i], "의 자릿수입니다.") 21 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_4a.py: -------------------------------------------------------------------------------- 1 | x = float(input("x 값을 입력하여라: ")) 2 | 3 | if -5 < x <= 0: 4 | if x != -1: 5 | y = x / (x - 3) + (8 + x) / (x + 1) 6 | print(y) 7 | else: 8 | print("올바르지 않은 값입니다.") 9 | elif 0 < x <= 6: 10 | y = 40 * x / (x - 8) 11 | print(y) 12 | elif 6 < x <= 20: 13 | if x != 9: 14 | y = 3 * x / (x - 9) 15 | print(y) 16 | else: 17 | print("올바르지 않은 값입니다.") 18 | else: 19 | y = abs(x) 20 | print(y) 21 | -------------------------------------------------------------------------------- /Chapter39/file_39_3e.py: -------------------------------------------------------------------------------- 1 | def my_divmod(a, b, results): 2 | return_value = True 3 | 4 | if b == 0: 5 | return_value = False 6 | else: 7 | results[0] = a // b 8 | results[1] = a % b 9 | 10 | return return_value 11 | 12 | # 메인 코드 13 | res = [None] * 2 14 | 15 | val1 = int(input()) 16 | val2 = int(input()) 17 | ret = my_divmod(val1, val2, res) 18 | if ret == True: 19 | print(res[0], res[1]) 20 | else: 21 | print("잘못된 입력값입니다!"); 22 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_9.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | while True: 5 | inp = input("0과 100 사이의 실수값을 입력하여라: ") 6 | if re.match(IS_NUMERIC, inp) and 0 <= float(inp) <= 100: break 7 | 8 | x = float(inp) 9 | 10 | best_n = 1 11 | best_m = 1 12 | for n in range(101): 13 | for m in range(1, 101): 14 | if abs(n / m - x) < abs(best_n / best_m - x): 15 | best_n = n 16 | best_m = m 17 | 18 | print("분수:", best_n, "/", best_m) 19 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_8b.py: -------------------------------------------------------------------------------- 1 | ROWS = 30 2 | COLUMNS = 20 3 | 4 | a = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | a[i][j] = float(input()) 9 | 10 | for j in range(COLUMNS): 11 | minimum = a[0][j] 12 | maximum = a[0][j] 13 | for i in range(1, ROWS): 14 | if a[i][j] < minimum: 15 | minimum = a[i][j] 16 | if a[i][j] > maximum: 17 | maximum = a[i][j] 18 | print(minimum, maximum) -------------------------------------------------------------------------------- /Chapter22/file_22_5_3b.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input() 5 | 6 | if not re.match(IS_NUMERIC, inp): 7 | print("숫자가 아닙니다.") 8 | else: 9 | x = int(inp) 10 | if x < 10000: 11 | print("5자릿수보다 작은 수입니다.") 12 | elif x > 99999: 13 | print("5자릿수보다 큰 수입니다.") 14 | else: 15 | inp_reversed = inp[::-1] 16 | if inp == inp_reversed: 17 | print("회문입니다.") 18 | else: 19 | print("회문이 아닙니다.") 20 | -------------------------------------------------------------------------------- /Chapter29/file_29_3_3.py: -------------------------------------------------------------------------------- 1 | import math 2 | import re 3 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 4 | 5 | while True: 6 | inp = input("음수가 아닌 숫자를 입력하여라: ") 7 | 8 | failure = False 9 | if not re.match(IS_NUMERIC, inp): 10 | print("숫자를 입력하시오!") 11 | failure = True 12 | elif float(inp) < 0: 13 | print("음수가 아닌 숫자를 입력하시오!") 14 | failure = True 15 | 16 | if failure == False: break 17 | 18 | x = float(inp) 19 | 20 | y = math.sqrt(x) 21 | print(y) 22 | -------------------------------------------------------------------------------- /Chapter29/file_29_6_4c.py: -------------------------------------------------------------------------------- 1 | message = input("메시지를 입력하여라: ").lower() 2 | 3 | message_clean = "" 4 | for letter in message: 5 | if letter not in " ,.?": 6 | message_clean += letter 7 | 8 | middle_pos = (len(message_clean) - 1) // 2 9 | 10 | palindrome = True 11 | i = 0 12 | 13 | while i <= middle_pos and palindrome == True: 14 | if message_clean[i] != message_clean[-i - 1]: 15 | palindrome = False 16 | i += 1 17 | 18 | if palindrome == True: 19 | print("이 메시지는 회문입니다.") 20 | -------------------------------------------------------------------------------- /Chapter35/file_35_4_3.py: -------------------------------------------------------------------------------- 1 | LAKES = 20 2 | 3 | names = [None] * LAKES 4 | areas = [None] * LAKES 5 | 6 | for i in range(LAKES): 7 | names[i] = input() 8 | areas[i] = float(input()) 9 | 10 | for m in range(LAKES - 1): 11 | for n in range(LAKES - 1, m, -1): 12 | if areas[n] < areas[n - 1]: 13 | areas[n], areas[n - 1] = areas[n - 1], areas[n] 14 | names[n], names[n - 1] = names[n - 1], names[n] 15 | 16 | for i in range(LAKES): 17 | print(names[i], "\t", areas[i]) -------------------------------------------------------------------------------- /Chapter35/file_35_3_7b.py: -------------------------------------------------------------------------------- 1 | ROWS = 30 2 | COLUMNS = 20 3 | 4 | a = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | a[i][j] = float(input()) 9 | 10 | for i in range(ROWS): 11 | minimum = a[i][0] 12 | maximum = a[i][0] 13 | for j in range(1, COLUMNS): 14 | if a[i][j] < minimum: 15 | maximum = a[i][j] 16 | if a[i][j] > maximum: 17 | maximum = a[i][j] 18 | 19 | print(minimum, maximum) -------------------------------------------------------------------------------- /Chapter35/file_35_5_2.py: -------------------------------------------------------------------------------- 1 | PEOPLE = 20 2 | 3 | first_names = [None] * PEOPLE 4 | last_names = [None] * PEOPLE 5 | 6 | for i in range(PEOPLE): 7 | first_names[i] = input("영문 이름을 입력하여라: ") 8 | last_names[i] = input("영문 성을 입력하여라: ") 9 | 10 | needle = input("검색하고자 하는 영문 이름을 입력하여라: ") 11 | 12 | found = False 13 | for i in range(PEOPLE): 14 | if first_names[i].upper() == needle.upper(): 15 | print(last_names[i]) 16 | found = True 17 | 18 | if found == False: 19 | print("어떤 사람도 발견하지 못하였습니다.") -------------------------------------------------------------------------------- /Chapter39/file_39_4a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 10 2 | 3 | def get_list(a): 4 | for m in range(1, ELEMENTS): 5 | element = a[m] 6 | n = m 7 | while n > 0 and a[n - 1] > element: 8 | a[n] = a[n - 1] 9 | n -= 1 10 | a[n] = element 11 | 12 | # 메인 코드 13 | t = [75, 73, 78, 70, 71, 74, 72, 69, 79, 77] 14 | 15 | get_list(t) 16 | 17 | print("가장 작은 수: ", t[0], t[1], t[2]) 18 | 19 | # 이 단계에서 리스트 t는 정렬되어 있음. 20 | for i in range(ELEMENTS): 21 | print(t[i], end = "\t") 22 | -------------------------------------------------------------------------------- /Chapter29/file_29_6_3b.py: -------------------------------------------------------------------------------- 1 | CITIZENS = 1000 2 | 3 | total_yes = 0 4 | female_no = 0 5 | for i in range(CITIZENS): 6 | while True: 7 | sex = input("성별을 입력하여라: ").lower() 8 | if sex in ["m", "f"]: break 9 | 10 | while True: 11 | answer = input("아침식사를 하십니까? ").lower() 12 | if answer in ["y", "n", "s"]: break 13 | 14 | if answer == "y": 15 | total_yes += 1 16 | elif sex == "f": 17 | female_no += 1 18 | 19 | print(total_yes, female_no * 100 / CITIZENS) 20 | -------------------------------------------------------------------------------- /Chapter33/file_33_5.py: -------------------------------------------------------------------------------- 1 | ROWS = 3 2 | COLUMNS = 4 3 | ELEMENTS = ROWS * COLUMNS 4 | 5 | a = [ [None] * COLUMNS for i in range(ROWS) ] 6 | 7 | for i in range(ROWS): 8 | for j in range(COLUMNS): 9 | a[i][j] = int(input(str(i) + ", " + str(j) + " 요소의 값을 입력하여라: ")) 10 | 11 | b = [None] * ELEMENTS 12 | 13 | k = 0 # 새로운 리스트의 인덱스 14 | 15 | for j in range(COLUMNS): # 열 단위로 반복 16 | for i in range(ROWS): 17 | b[k] = a[i][j] 18 | k += 1 19 | 20 | for k in range(ELEMENTS): 21 | print(b[k], end = "\t") 22 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_2.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 20 2 | 3 | # 입력받은 값을 리스트 a와 b에 각각 저장한다. 4 | a = [None] * ELEMENTS 5 | b = [None] * ELEMENTS 6 | for i in range(ELEMENTS): 7 | a[i] = float(input()) 8 | for i in range(ELEMENTS): 9 | b[i] = float(input()) 10 | 11 | # 리스트 new_arr를 생성한다. 12 | new_arr = [None] * ELEMENTS 13 | 14 | for i in range(ELEMENTS): 15 | if a[i] > b[i]: 16 | new_arr[i] = a[i] 17 | else: 18 | new_arr[i] = b[i] 19 | 20 | # 리스트 new_arr를 출력한다. 21 | for i in range(ELEMENTS): 22 | print(new_arr[i]) -------------------------------------------------------------------------------- /Chapter33/file_33_6.py: -------------------------------------------------------------------------------- 1 | ROWS = 3 2 | COLUMNS = 4 3 | ELEMENTS = ROWS * COLUMNS 4 | 5 | a = [None] * ELEMENTS 6 | 7 | for k in range(ELEMENTS): 8 | a[k] = int(input(str(k) + " 요소의 값을 입력하여라: ")) 9 | 10 | b = [ [None] * COLUMNS for i in range(ROWS) ] 11 | 12 | k = 0 # 리스트 a의 인덱스 13 | 14 | for j in range(COLUMNS): # 열 단위로 반복 15 | for i in range(ROWS): 16 | b[i][j] = a[k] 17 | k += 1 18 | 19 | for i in range(ROWS): # 행 단위로 반복 20 | for j in range(COLUMNS): 21 | print(b[i][j], end = "\t") 22 | print() 23 | -------------------------------------------------------------------------------- /Chapter22/file_22_3a.py: -------------------------------------------------------------------------------- 1 | print("네 사람의 몸무게를 입력하여라:") 2 | 3 | w1 = int(input()) 4 | w2 = int(input()) 5 | w3 = int(input()) 6 | w4 = int(input()) 7 | 8 | 9 | # 첫 번째 사람의 몸무게를 저장 10 | minimum = w1 11 | 12 | # 두 번째 사람의 몸무게가 첫 번째 사람보다 적으면 13 | # 두 번째 사람의 몸무게를 저장 14 | if w2 < minimum: 15 | minimum = w2 16 | 17 | # 세 번째 사람의 몸무게가 minimum보다 적으면 18 | # 세 번째 사람의 몸무게를 저장 19 | if w3 < minimum: 20 | minimum = w3 21 | 22 | # 네 번째 사람의 몸무게가 minimum보다 적으면 23 | # 네 번째 사람의 몸무게를 저장 24 | if w4 < minimum: 25 | minimum = w4 26 | 27 | print(minimum) 28 | -------------------------------------------------------------------------------- /Chapter33/file_33_2_1c.py: -------------------------------------------------------------------------------- 1 | STUDENTS = 20 2 | LESSONS = 10 3 | 4 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 5 | 6 | for i in range(STUDENTS): 7 | print("학생 번호:", (i + 1)) 8 | for j in range(LESSONS): 9 | grades[i][j] = int(input(str(j + 1) + "번째 교과목의 점수를 입력하여라: ")) 10 | 11 | # 행 단위 평균을 계산한 후, 89점보다 높은 점수 직접 출력 12 | for i in range(STUDENTS): 13 | average = 0 14 | for j in range(LESSONS): 15 | average += grades[i][j] 16 | average /= LESSONS 17 | if average > 89: 18 | print(average) 19 | -------------------------------------------------------------------------------- /Chapter33/file_33_3_1b.py: -------------------------------------------------------------------------------- 1 | STUDENTS = 10 2 | LESSONS = 5 3 | 4 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 5 | 6 | for i in range(STUDENTS): 7 | print("학생 번호:", (i + 1)) 8 | for j in range(LESSONS): 9 | grades[i][j] = int(input(str(j + 1) + "번째 교과목의 점수를 입력하여라: ")) 10 | 11 | # 열 단위로 평균 점수를 계산한 후, 89점보다 높은 점수를 바로 출력 12 | for j in range(LESSONS): 13 | average = 0 14 | for i in range(STUDENTS): 15 | average += grades[i][j] 16 | average /= STUDENTS 17 | if average > 89: 18 | print(average) 19 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_3b.py: -------------------------------------------------------------------------------- 1 | ELEMENTS_OF_A = 20 2 | ELEMENTS_OF_B = 30 3 | 4 | # 입력받은 값을 리스트 a와 b에 각각 저장한다. 5 | a = [None] * ELEMENTS_OF_A 6 | b = [None] * ELEMENTS_OF_B 7 | for i in range(ELEMENTS_OF_A): 8 | a[i] = float(input()) 9 | for i in range(ELEMENTS_OF_B): 10 | b[i] = float(input()) 11 | 12 | # 리스트 new_arr를 생성한다. 13 | new_arr = [] 14 | for element in a: 15 | new_arr.append(element) 16 | for element in b: 17 | new_arr.append(element) 18 | 19 | # 리스트 new_arr를 출력한다. 20 | for element in new_arr: 21 | print(element, end = "\t") -------------------------------------------------------------------------------- /Chapter33/file_33_2_1b.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | STUDENTS = 20 4 | LESSONS = 10 5 | 6 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 7 | 8 | for i in range(STUDENTS): 9 | print("학생 번호:", (i + 1)) 10 | for j in range(LESSONS): 11 | grades[i][j] = int(input(str(j + 1) + "번째 교과목의 점수를 입력하여라: ")) 12 | 13 | # average 리스트 생성 14 | average = [] 15 | for row in grades: 16 | average.append(math.fsum(row) / LESSONS) 17 | 18 | # 89점보다 높은 점수 출력 19 | for i in range(STUDENTS): 20 | if average[i] > 89: 21 | print(average[i]) 22 | -------------------------------------------------------------------------------- /Chapter35/file_35_4_6.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 20 2 | 3 | w = [None] * ELEMENTS 4 | 5 | for i in range(ELEMENTS): 6 | w[i] = float(input()) 7 | 8 | for m in range(ELEMENTS-1): 9 | swaps = False 10 | for n in range(ELEMENTS-1, m, -1): 11 | if w[n] < w[n-1]: 12 | w[n], w[n-1] = w[n-1], w[n] 13 | swaps = True 14 | if swaps == False: break 15 | 16 | print("가장 무거운 몸무게:") 17 | print(w[ELEMENTS-3]) 18 | print(w[ELEMENTS-2]) 19 | print(w[ELEMENTS-1]) 20 | 21 | print("가장 가벼운 몸무게:") 22 | print(w[0]) 23 | print(w[1]) 24 | print(w[2]) -------------------------------------------------------------------------------- /Chapter35/file_35_5_4.py: -------------------------------------------------------------------------------- 1 | PEOPLE = 100 2 | 3 | SSNs = [None] * PEOPLE 4 | first_names = [None] * PEOPLE 5 | last_names = [None] * PEOPLE 6 | 7 | for i in range(PEOPLE): 8 | SSNs[i] = input("사회보장번호(SSN)를 입력하여라: ") 9 | first_names[i] = input("영문 이름을 입력하여라: ") 10 | last_names[i] = input("영문 성을 입력하여라: ") 11 | 12 | needle = input("검색할 사회보장번호(SSN)를 입력하여라: ") 13 | 14 | i = 0 15 | while i < PEOPLE - 1 and SSNs[i] != needle: 16 | i += 1 17 | 18 | if SSNs[i] != needle: 19 | print("아무것도 찾지 못하였습니다.") 20 | else: 21 | print(first_names[i], last_names[i]) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 한 권으로 배우는 파이썬 기초&알고리즘 사고법 4 | ![한 권으로 배우는 파이썬 기초&알고리즘 사고법](http://image.kyobobook.co.kr/images/book/xlarge/132/x9791188621132.jpg) 5 | 6 | 7 | **출판사** 제이펍 8 | **원서명** Python and Algorithmic Thinking for the Complete Beginner: Learn to Think Like a Programmer 9 | (원서 ISBN: 9781514802168) 10 | **저자명** 아리스티데스 보우라스, 루키아 아이나로지두 11 | **역자명** 길준민, 임종범, 송의성, 유헌창 12 | **출판일** 2018년 7월 10일 13 | **페이지** 848쪽 14 | **ISBN** 979-11-88621-13-2(93000) 15 | 16 | 17 | 18 | [### 도서 소개 페이지 바로 가기 ###](http://jpub.tistory.com/817?category=208491) -------------------------------------------------------------------------------- /Chapter29/file_29_6_3a.py: -------------------------------------------------------------------------------- 1 | CITIZENS = 1000 2 | 3 | total_yes = 0 4 | female_no = 0 5 | for i in range(CITIZENS): 6 | while True: 7 | sex = input("성별을 입력하여라: ").lower() 8 | if sex == "m" or sex == "f": break 9 | 10 | while True: 11 | answer = input("아침식사를 하십니까? ").lower() 12 | if answer == "y" or answer == "n" or answer == "s": break 13 | 14 | if answer == "y": 15 | total_yes += 1 16 | 17 | if sex == "f" and answer == "n": 18 | female_no += 1 19 | 20 | print(total_yes, female_no * 100 / CITIZENS) 21 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_6.py: -------------------------------------------------------------------------------- 1 | CITIES = 10 2 | DAYS = 31 3 | 4 | names = [None] * CITIES 5 | t = [ [None] * DAYS for i in range(CITIES) ] 6 | for i in range(CITIES): 7 | names[i] = input() 8 | for j in range(DAYS): 9 | t[i][j] = int(input()) 10 | 11 | minimum = t[0][0] 12 | m_i = 0 13 | m_j = 0 14 | for i in range(CITIES): 15 | for j in range(DAYS): 16 | if t[i][j] < minimum: 17 | minimum = t[i][j] 18 | m_i = i 19 | m_j = j 20 | 21 | print("최저 온도:", minimum) 22 | print("도시:", names[m_i]) 23 | print("날짜:", m_j + 1) 24 | -------------------------------------------------------------------------------- /Chapter35/file_35_6_3b.py: -------------------------------------------------------------------------------- 1 | CITIES = 10 2 | DAYS = 31 3 | 4 | names = [None] * CITIES 5 | t = [ [None] * DAYS for i in range(CITIES) ] 6 | 7 | for i in range(CITIES): 8 | names[i] = input(str(i + 1) + "번째 도시의 이름을 입력하여라: ") 9 | for j in range(DAYS): 10 | t[i][j] = int(input(str(j + 1) + "번째 날짜의 온도를 입력하여라: ")) 11 | 12 | print("1월 중 강설 가능성이 있는 도시:") 13 | for i in range(CITIES): 14 | found = False 15 | for j in range(DAYS): 16 | if t[i][j] < 2: 17 | found = True 18 | 19 | if found == True: 20 | print(names[i]) 21 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_3.py: -------------------------------------------------------------------------------- 1 | print("소포의 무게와 목적지를 입력하여라: ") 2 | weight = float(input()) 3 | dest = input() 4 | if dest.upper() == "I": 5 | if weight <= 1: 6 | cost = weight * 1000 7 | elif weight <= 2: 8 | cost = weight * 1300 9 | elif weight <= 4: 10 | cost = weight * 1500 11 | else: 12 | cost = weight * 2000 13 | else: 14 | if weight <= (1): 15 | cost = 10000 16 | elif weight <= 2: 17 | cost = 20000 18 | elif weight <= 4: 19 | cost = 50000 20 | else: 21 | cost = 60000 22 | 23 | print("배송비:", cost) 24 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_3b.py: -------------------------------------------------------------------------------- 1 | LAKES = 20 2 | 3 | names = [None] * LAKES 4 | depths = [None] * LAKES 5 | countries = [None] * LAKES 6 | areas = [None] * LAKES 7 | 8 | for i in range(LAKES): 9 | names[i] = input() 10 | depths[i] = float(input()) 11 | countries[i] = input() 12 | areas[i] = float(input()) 13 | 14 | maximum = depths[0] 15 | index_of_max = 0 16 | for i in range(1, LAKES): 17 | if depths[i] > maximum: 18 | maximum = depths[i] 19 | index_of_max = i 20 | 21 | print(depths[index_of_max], names[index_of_max]) 22 | print(countries[index_of_max], areas[index_of_max]) -------------------------------------------------------------------------------- /Chapter35/file_35_3_7a.py: -------------------------------------------------------------------------------- 1 | ROWS = 30 2 | COLUMNS = 20 3 | 4 | a = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | a[i][j] = float(input()) 9 | 10 | minimum = [None] * ROWS 11 | maximum = [None] * ROWS 12 | for i in range(ROWS): 13 | minimum[i] = a[i][0] 14 | maximum[i] = a[i][0] 15 | for j in range(1, COLUMNS): 16 | if a[i][j] < minimum[i]: 17 | minimum[i] = a[i][j] 18 | if a[i][j] > maximum[i]: 19 | maximum[i] = a[i][j] 20 | 21 | for i in range(ROWS): 22 | print(minimum[i], maximum[i]) -------------------------------------------------------------------------------- /Chapter38/file_38_4_2.py: -------------------------------------------------------------------------------- 1 | def display_menu(): 2 | print("1. 달러를 유로로 변환하기") 3 | print("2. 유로를 달러로 변환하기") 4 | print("3. 종료") 5 | print("----------------------------") 6 | print("선택하여라: ", end = "") 7 | 8 | # 메인 코드 9 | while True: 10 | display_menu() 11 | choice = int(input()) 12 | 13 | if choice != 3: 14 | amount = float(input("금액을 입력하여라: ")) 15 | if choice == 1: 16 | print(amount, "달러 =", amount * 0.72, "유로") 17 | else: 18 | print(amount, "유로 =", amount / 0.72, "달러") 19 | else: 20 | print("종료합니다.") 21 | break 22 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_7.py: -------------------------------------------------------------------------------- 1 | import re 2 | import random 3 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 4 | ACCURACY = 0.0000000000001 5 | 6 | inp = input("음수가 아닌 숫자를 입력하여라: ") 7 | while not re.match(IS_NUMERIC, inp) or float(inp) < 0: 8 | inp = input("올바르지 않은 값입니다. 음수가 아닌 숫자를 입력하여라: ") 9 | 10 | y = float(inp) 11 | 12 | guess = random.randrange(1, y + 1) # 첫 번째 추측값을 1과 입력값 13 | # 사이에서 무작위로 생성 14 | 15 | while abs(guess * guess - y) > ACCURACY: # 충분히 가까운가? 16 | guess = (guess + y / guess) / 2 # 그렇지 않으면 새로운 추측값을 생성! 17 | 18 | print(guess) 19 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_8a.py: -------------------------------------------------------------------------------- 1 | ROWS = 30 2 | COLUMNS = 20 3 | 4 | a = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | a[i][j] = float(input()) 9 | 10 | minimum = [None] * COLUMNS 11 | maximum = [None] * COLUMNS 12 | 13 | for j in range(COLUMNS): 14 | minimum[j] = a[0][j] 15 | maximum[j] = a[0][j] 16 | for i in range(1, ROWS): 17 | if a[i][j] < minimum[j]: 18 | minimum[j] = a[i][j] 19 | if a[i][j] > maximum[j]: 20 | maximum[j] = a[i][j] 21 | 22 | for j in range(COLUMNS): 23 | print(minimum[j], maximum[j]) -------------------------------------------------------------------------------- /Chapter35/file_35_1_5a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 100 2 | 3 | ar = [None] * ELEMENTS 4 | for i in range(ELEMENTS): 5 | ar[i] = float(input()) 6 | 7 | # 리스트 pos와 neg를 생성한다. 8 | pos = [None] * ELEMENTS 9 | neg = [None] * ELEMENTS 10 | pos_index = 0 11 | neg_index = 0 12 | for i in range(ELEMENTS): 13 | if ar[i] > 0: 14 | pos[pos_index] = ar[i] 15 | pos_index += 1 16 | elif ar[i] < 0: 17 | neg[neg_index] = ar[i] 18 | neg_index += 1 19 | 20 | for i in range(pos_index): 21 | print(pos[i], end = "\t") 22 | 23 | print() 24 | 25 | for i in range(neg_index): 26 | print(neg[i], end = "\t") -------------------------------------------------------------------------------- /Chapter35/file_35_6_3a.py: -------------------------------------------------------------------------------- 1 | CITIES = 10 2 | DAYS = 31 3 | 4 | names = [None] * CITIES 5 | t = [ [None] * DAYS for i in range(CITIES) ] 6 | 7 | for i in range(CITIES): 8 | names[i] = input(str(i + 1) + "번째 도시의 이름을 입력하여라: ") 9 | for j in range(DAYS): 10 | t[i][j] = int(input(str(j + 1) + "번째 날짜의 온도를 입력하여라: ")) 11 | 12 | count = [None] * CITIES 13 | 14 | for i in range(CITIES): 15 | count[i] = 0 16 | for j in range(DAYS): 17 | if t[i][j] < 2: 18 | count[i] += 1 19 | 20 | print("1월 중 강설 가능성이 있는 도시:") 21 | for i in range(CITIES): 22 | if count[i] != 0: 23 | print(names[i]) 24 | -------------------------------------------------------------------------------- /Chapter33/file_33_2_1a.py: -------------------------------------------------------------------------------- 1 | STUDENTS = 20 2 | LESSONS = 10 3 | 4 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 5 | 6 | for i in range(STUDENTS): 7 | print("학생 번호:", (i + 1)) 8 | for j in range(LESSONS): 9 | grades[i][j] = int(input(str(j + 1) + "번째 교과목의 점수를 입력하여라: ")) 10 | 11 | # average 리스트 생성 12 | average = [None] * STUDENTS 13 | for i in range(STUDENTS): 14 | average[i] = 0 15 | for j in range(LESSONS): 16 | average[i] += grades[i][j] 17 | average[i] /= LESSONS 18 | 19 | # 89점보다 높은 점수 출력 20 | for i in range(STUDENTS): 21 | if average[i] > 89: 22 | print(average[i]) 23 | -------------------------------------------------------------------------------- /Chapter29/file_29_4_1.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | while True: 4 | a = float(input("변 A를 입력하여라: ")) 5 | while a <= 0: 6 | a = float(input("올바르지 않은 값입니다. 변 A를 입력하여라: ")) 7 | 8 | b = float(input("변 B를 입력하여라: ")) 9 | while b <= 0: 10 | b = float(input("올바르지 않은 값입니다. 변 B를 입력하여라: ")) 11 | 12 | c = float(input("변 C를 입력하여라: ")) 13 | while c <= 0: 14 | c = float(input("올바르지 않은 값입니다. 변 C를 입력하여라: ")) 15 | 16 | s = (a + b + c) / 2 17 | area = math.sqrt(s * (s - a) * (s - b) * (s - c)) 18 | print("면적:", area) 19 | 20 | answer = input("반복하시겠습니까?: ") 21 | if answer.upper() != "YES": break 22 | -------------------------------------------------------------------------------- /Chapter29/file_29_6_4b.py: -------------------------------------------------------------------------------- 1 | message = input("메시지를 입력하여라: ").lower() 2 | 3 | # "not in" 멤버십 연산자를 사용하여 공백, 쉼표, 구두점, 물음표를 제거 4 | message_clean = "" 5 | for letter in message: 6 | if letter not in " ,.?": 7 | message_clean += letter 8 | 9 | middle_pos = (len(message_clean) - 1) // 2 10 | 11 | palindrome = True 12 | 13 | for i in range(middle_pos + 1): 14 | left_letter = message_clean[i] 15 | # 음수 인덱스를 사용하여 문자를 오른쪽에서부터 접근 16 | right_letter = message_clean[-i - 1] 17 | if left_letter != right_letter: 18 | palindrome = False 19 | break 20 | 21 | if palindrome == True: 22 | print("이 메시지는 회문입니다.") 23 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_4c.py: -------------------------------------------------------------------------------- 1 | COLUMNS = 20 2 | ROWS_OF_A = 10 3 | ROWS_OF_B = 30 4 | 5 | # 입력받은 값을 리스트 a에 저장한다. 6 | a = [ [None] * COLUMNS for i in range(ROWS_OF_A) ] 7 | for i in range(ROWS_OF_A): 8 | for j in range(COLUMNS): 9 | a[i][j] = float(input()) 10 | 11 | # 입력받은 값을 리스트 b에 저장한다. 12 | b = [ [None] * COLUMNS for i in range(ROWS_OF_B) ] 13 | for i in range(ROWS_OF_B): 14 | for j in range(COLUMNS): 15 | b[i][j] = float(input()) 16 | 17 | # 리스트 new_arr를 생성한다. 18 | new_arr = a + b 19 | 20 | # 리스트 new_arr를 출력한다. 21 | for row in new_arr: 22 | for element in row: 23 | print(element, end = "\t") 24 | print() -------------------------------------------------------------------------------- /Chapter22/file_22_5_3a.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input() 5 | 6 | if not re.match(IS_NUMERIC, inp): 7 | print("숫자가 아닙니다.") 8 | else: 9 | x = int(inp) 10 | if x < 10000: 11 | print("5자릿수보다 작은 수입니다.") 12 | elif x > 99999: 13 | print("5자릿수보다 큰 수입니다.") 14 | else: 15 | digit1, r = divmod(x, 10000) 16 | digit2, r = divmod(r, 1000) 17 | digit3, r = divmod(r, 100) 18 | digit4, digit5 = divmod(r, 10) 19 | 20 | if digit1 == digit5 and digit2 == digit4: 21 | print("회문입니다.") 22 | else: 23 | print("회문이 아닙니다.") 24 | -------------------------------------------------------------------------------- /Chapter33/file_33_3_1a.py: -------------------------------------------------------------------------------- 1 | STUDENTS = 10 2 | LESSONS = 5 3 | 4 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 5 | for i in range(STUDENTS): 6 | print("학생 번호:", (i + 1)) 7 | for j in range(LESSONS): 8 | grades[i][j] = int(input(str(j + 1) + "번째 교과목의 점수를 입력하여라: ")) 9 | 10 | # average 리스트를 생성한 후, 열 단위로 반복 처리 11 | average = [None] * LESSONS 12 | for j in range(LESSONS): 13 | average[j] = 0 14 | for i in range(STUDENTS): 15 | average[j] += grades[i][j] 16 | average[j] /= STUDENTS 17 | 18 | # 89점보다 높은 평균 점수 모두를 출력 19 | for j in range(LESSONS): 20 | if average[j] > 89: 21 | print(average[j]) 22 | -------------------------------------------------------------------------------- /Chapter35/file_35_5_7.py: -------------------------------------------------------------------------------- 1 | ROWS = 20 2 | COLUMNS = 30 3 | 4 | haystack = [ [None] * COLUMNS for i in range(ROWS) ] 5 | 6 | for i in range(ROWS): 7 | for j in range(COLUMNS): 8 | haystack[i][j] = float(input()) 9 | 10 | needle = float(input("검색 값을 입력하여라: ")) 11 | 12 | count = 0 13 | for j in range(COLUMNS): 14 | found = False 15 | for i in range(ROWS): 16 | if haystack[i][j] == needle: 17 | found = True 18 | break 19 | 20 | if found == True: 21 | count += 1 22 | else: 23 | break 24 | 25 | if count == COLUMNS: 26 | print(needle, "이/가 모든 열에 있습니다.") 27 | -------------------------------------------------------------------------------- /Chapter29/file_29_5_2.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | maximum = -274 5 | m_name = "" 6 | 7 | name = input("행성 이름을 입력하여라: ") 8 | while name.upper() != "STOP": 9 | inp = input("행성의 평균 온도를 입력하여라: ") 10 | while not re.match(IS_NUMERIC, inp) or float(inp) < --273.15: 11 | print("부적절한 값!") 12 | inp = input("-273.15보다 큰 값을 입력하여라: ") 13 | 14 | t = float(inp) 15 | 16 | if t > maximum: 17 | maximum = t 18 | m_name = name 19 | 20 | name = input("행성 이름을 입력하여라: ") 21 | 22 | if maximum != -274: 23 | print("가장 뜨거운 행성:", m_name) 24 | else: 25 | print("아무런 값도 입력하지 않았음!") 26 | -------------------------------------------------------------------------------- /Chapter22/file_22_3_1.py: -------------------------------------------------------------------------------- 1 | w1 = int(input("첫 번째 사람의 몸무게를 입력하여라: ")) 2 | n1 = input("첫 번째 사람의 이름을 입력하여라: ") 3 | 4 | w2 = int(input("두 번째 사람의 몸무게를 입력하여라: ")) 5 | n2 = input("두 번째 사람의 이름을 입력하여라: ") 6 | 7 | w3 = int(input("세 번째 사람의 몸무게를 입력하여라: ")) 8 | n3 = input("세 번째 사람의 이름을 입력하여라: ") 9 | 10 | maximum = w1 11 | m_name = n1 # 몸무게가 가장 많이 나가는 사람의 이름을 저장할 변수 12 | 13 | if w2 > maximum: 14 | maximum = w2 15 | m_name = n2 # maximum보다 w2가 크므로 n2값을 m_name에 저장 16 | 17 | if w3 > maximum: 18 | maximum = w3 19 | m_name = n3 # maximum보다 w3가 크므로 n3값을 m_name에 저장 20 | 21 | print("몸무게가 가장 많이 나가는 사람:", m_name) 22 | print("몸무게:", maximum) 23 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_3a.py: -------------------------------------------------------------------------------- 1 | ELEMENTS_OF_A = 20 2 | ELEMENTS_OF_B = 30 3 | ELEMENTS_OF_NEW = ELEMENTS_OF_A + ELEMENTS_OF_B 4 | 5 | # 입력받은 값을 리스트 a와 b에 각각 저장한다. 6 | a = [None] * ELEMENTS_OF_A 7 | b = [None] * ELEMENTS_OF_B 8 | for i in range(ELEMENTS_OF_A): 9 | a[i] = float(input()) 10 | for i in range(ELEMENTS_OF_B): 11 | b[i] = float(input()) 12 | 13 | # 리스트 new_arr를 생성한다. 14 | new_arr = [None] * ELEMENTS_OF_NEW 15 | for i in range(ELEMENTS_OF_A): 16 | new_arr[i] = a[i] 17 | for i in range(ELEMENTS_OF_B): 18 | new_arr[ELEMENTS_OF_A + i] = b[i] 19 | 20 | # 리스트 new_arr를 출력한다. 21 | for i in range(ELEMENTS_OF_NEW): 22 | print(new_arr[i], end = "\t") -------------------------------------------------------------------------------- /Chapter39/file_39_5b.py: -------------------------------------------------------------------------------- 1 | def prepend_title(first_name, last_name, title = "Mr.", reverse = False): 2 | if reverse == False: 3 | return_value = title + " " + first_name + " " + last_name 4 | else: 5 | return_value = title + " " + last_name + " " + first_name 6 | return return_value 7 | 8 | # 메인 코드 9 | 10 | # Mr. John King 출력 11 | print(prepend_title("John", "King")) 12 | 13 | # Ms. Maria Miller 출력 14 | print(prepend_title("Maria", "Miller", "Ms.")) 15 | 16 | # Ms. Miller Maria 출력 17 | print(prepend_title("Maria", "Miller", "Ms.", True)) 18 | 19 | # ㅋ키워드 인자를 사용하여 Mr. King John 출력 20 | print(prepend_title("John", "King", reverse = True)) 21 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_6.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input("전력 소비량을 입력하여라(kWh): ") 5 | 6 | if not re.match(IS_NUMERIC, inp): 7 | print("입력한 값은 숫자가 아닙니다.") 8 | else: 9 | kwh = int(inp) 10 | if kwh < 0: 11 | print("입력한 값은 음수입니다.") 12 | else: 13 | if kwh <= 500: 14 | t = kwh * 100 15 | elif kwh <= 2000: 16 | t = 250 * kwh - 75000 17 | elif kwh <= 4000: 18 | t = 400 * kwh - 375000 19 | else: 20 | t = 600 * kwh - 1175000 21 | 22 | t = 1.10 * t # 이 명령문은 t = t + (t * 10 / 100)과 동일함 23 | 24 | print("세금을 포함한 총 지불액:", t) 25 | -------------------------------------------------------------------------------- /Chapter35/file_35_3_3a.py: -------------------------------------------------------------------------------- 1 | LAKES = 20 2 | 3 | names = [None] * LAKES 4 | depths = [None] * LAKES 5 | countries = [None] * LAKES 6 | areas = [None] * LAKES 7 | 8 | for i in range(LAKES): 9 | names[i] = input() 10 | depths[i] = float(input()) 11 | countries[i] = input() 12 | areas[i] = float(input()) 13 | 14 | maximum = depths[0] 15 | m_name = names[0] 16 | m_country = countries[0] 17 | m_area = areas[0] 18 | for i in range(1, LAKES): 19 | if depths[i] > maximum: 20 | maximum = depths[i] 21 | m_name = names[i] 22 | m_country = countries[i] 23 | m_area = areas[i] 24 | 25 | print(maximum, m_name, m_country, m_area) -------------------------------------------------------------------------------- /Chapter22/file_22_2_5.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | print("a, b, c의 값을 입력하여라: ") 4 | a = float(input()) 5 | b = float(input()) 6 | c = float(input()) 7 | 8 | if a != 0: 9 | D = b ** 2 - 4 * a * c 10 | if D >= 0: 11 | if D > 0: 12 | x1 = (-b + math.sqrt(D)) / (2 * a) 13 | x2 = (-b - math.sqrt(D)) / (2 * a) 14 | print("근:", x1, ",", x2) 15 | else: 16 | x = -b / (2 * a) 17 | print("하나의 중근:", x) 18 | else: 19 | print("허근") 20 | else: 21 | if b != 0: 22 | x = -c / b 23 | print("근:", x) 24 | elif c != 0: 25 | print("불능") 26 | else: 27 | print("부정") 28 | -------------------------------------------------------------------------------- /Chapter22/file_22_1_5.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | COEFFICIENT = 3.785 4 | 5 | print("1: 갤런을 리터로 바꾸기") 6 | print("2: 리터를 갤런으로 바꾸기") 7 | choice = int(input("메뉴를 선택하여라: ")) 8 | 9 | if choice < 1 or choice > 2: 10 | print("잘못된 선택입니다.") 11 | else: 12 | inp = input("연료량을 입력하여라: ") 13 | if re.match(IS_NUMERIC, inp): 14 | quantity = float(inp) 15 | if choice == 1: 16 | result = quantity * COEFFICIENT 17 | print(quantity, "갤런 =", result, "리터") 18 | else: 19 | result = quantity / COEFFICIENT 20 | print(quantity, "리터 =", result, "갤런") 21 | else: 22 | print("숫자가 아닙니다.") 23 | -------------------------------------------------------------------------------- /Chapter39/file_39_7a.py: -------------------------------------------------------------------------------- 1 | total_yes = 0 2 | female_no = 0 3 | for i in range(100): 4 | 5 | while True: 6 | temp1 = input("성별을 입력하세요(" + str(i + 1) + "): ") 7 | sex = temp1.lower() # 영어 입력일 경우 소문자로 변경 8 | if sex == "남자" or sex == "여자": break 9 | 10 | while True: 11 | temp2 = input("오후에 조깅을 하나요? ") 12 | answer = temp2.lower() # 영어 입력일 경우 소문자로 변경 13 | if answer == "예" or answer == "아니요" or answer == "종종": break 14 | 15 | if answer == "예": 16 | total_yes += 1 17 | 18 | if sex == "여자" and answer == "아니요": 19 | female_no += 1 20 | 21 | print("긍정적인 답볍의 수:", total_yes) 22 | print("여성의 부정적인 답변의 수:", female_no) 23 | -------------------------------------------------------------------------------- /Chapter22/file_22_4_2.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | inp = input("주문액을 입력하여라: ") 5 | 6 | if not re.match(IS_NUMERIC, inp): 7 | print("입력한 값은 숫자가 아닙니다.") 8 | else: 9 | amount = float(inp) 10 | if amount < 0: 11 | print("입력한 값이 음수입니다.") 12 | else: 13 | if amount < 30000: 14 | discount = 0 15 | elif amount < 70000: 16 | discount = 5 17 | elif amount < 150000: 18 | discount = 10 19 | else: 20 | discount = 20 21 | payment = amount - amount * discount / 100 22 | 23 | print("할인액: ", discount, "%", sep = "") 24 | print("지불액: ", payment, "원", sep = "") 25 | -------------------------------------------------------------------------------- /Chapter41/file_41_1_2.py: -------------------------------------------------------------------------------- 1 | def test_integer(number): 2 | return_value = False 3 | 4 | if number == int(number): 5 | return_value = True 6 | return return_value 7 | 8 | def test_odd(number): 9 | return_value = False 10 | 11 | if number % 2 != 0: 12 | return_value = True 13 | return return_value 14 | 15 | def test_positive(number): 16 | return_value = False 17 | 18 | if number > 0: 19 | return_value = True 20 | return return_value 21 | 22 | # 메인 코드 23 | total = 0 24 | x = float(input()) 25 | while test_positive(x) == True: 26 | if test_integer(x) == True and test_odd(x) == True: 27 | total += x 28 | x = float(input()) 29 | 30 | print(total) 31 | -------------------------------------------------------------------------------- /Chapter35/file_35_1_4b.py: -------------------------------------------------------------------------------- 1 | COLUMNS = 20 2 | ROWS_OF_A = 10 3 | ROWS_OF_B = 30 4 | 5 | # 입력받은 값을 리스트 a에 저장한다. 6 | a = [ [None] * COLUMNS for i in range(ROWS_OF_A) ] 7 | for i in range(ROWS_OF_A): 8 | for j in range(COLUMNS): 9 | a[i][j] = float(input()) 10 | 11 | # 입력받은 값을 리스트 b에 저장한다. 12 | b = [ [None] * COLUMNS for i in range(ROWS_OF_B) ] 13 | for i in range(ROWS_OF_B): 14 | for j in range(COLUMNS): 15 | b[i][j] = float(input()) 16 | 17 | # 리스트 new_arr를 생성한다. 18 | new_arr = [] 19 | for row in a: 20 | new_arr.append(row) 21 | for row in b: 22 | new_arr.append(row) 23 | 24 | # 리스트 new_arr를 출력한다. 25 | for row in new_arr: 26 | for element in row: 27 | print(element, end = "\t") 28 | print() -------------------------------------------------------------------------------- /Chapter33/file_33_4_1b.py: -------------------------------------------------------------------------------- 1 | STUDENTS = 10 2 | LESSONS = 5 3 | 4 | # 이름과 점수를 함께 입력받음 5 | names = [None] * STUDENTS 6 | grades = [ [None] * STUDENTS for i in range(LESSONS) ] 7 | for j in range(STUDENTS): 8 | names[j] = input(str(j + 1) + "번째 학생의 이름을 입력하여라: ") 9 | for i in range(LESSONS): 10 | grades[i][j] = int(input(str(names[j]) + " 학생의 " + \ 11 | str(i + 1) + "번째 과목 점수를 입력하여라: ")) 12 | 13 | # count 리스트 생성 14 | count = [None] * STUDENTS 15 | for j in range(STUDENTS): 16 | count[j] = 0 17 | for i in range(LESSONS): 18 | if grades[i][j] > 89: 19 | count[j] += 1 20 | 21 | # 점수가 89점 이상인 학생 이름 출력 22 | for j in range(STUDENTS): 23 | if count[j] > 1: 24 | print(names[j]) -------------------------------------------------------------------------------- /Chapter35/file_35_2_3.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 4 | ELEMENTS = 20 5 | odds = [None] * ELEMENTS 6 | for i in range(ELEMENTS): 7 | while True: 8 | inp = input("홀수 정수를 입력하여라: ") 9 | failure = False 10 | if not re.match(IS_NUMERIC, inp): 11 | print("숫자값을 입력하여라!") 12 | failure = True 13 | elif float(inp) != int(float(inp)): 14 | print("정수를 입력하여라!") 15 | failure = True 16 | elif int(inp) % 2 == 0: 17 | print("홀수를 입력하세요!") 18 | failure = True 19 | if failure == False: break 20 | odds[i] = int(inp) 21 | 22 | # 요소를 역순으로 출력 23 | for element in odds[::-1]: 24 | print(element, end = "\t") 25 | -------------------------------------------------------------------------------- /Chapter35/file_35_5_5.py: -------------------------------------------------------------------------------- 1 | TEAMS = 12 2 | WEEKS = 20 3 | 4 | names = [None] * TEAMS 5 | results = [ [None] * WEEKS for i in range(TEAMS) ] 6 | 7 | for i in range(TEAMS): 8 | names[i] = input(str(i + 1) + "번째 팀 이름을 입력하여라: ") 9 | for j in range(WEEKS): 10 | results[i][j] = input(str(j + 1) + "번째 주 " + names[i] + \ 11 | "의 결과를 입력하여라: ") 12 | needle = input("검색할 결과를 입력하여라: ") 13 | 14 | for i in range(TEAMS): 15 | found = False 16 | print(names[i], "의 결과를 발견하였습니다.") 17 | for j in range(WEEKS): 18 | if results[i][j].upper() == needle.upper(): 19 | print((j + 1), "번째 주") 20 | found = True 21 | 22 | if found == False: 23 | print("어떤 결과도 발견하지 못했습니다.") -------------------------------------------------------------------------------- /Chapter33/file_33_4_1a.py: -------------------------------------------------------------------------------- 1 | STUDENTS = 10 2 | LESSONS = 5 3 | 4 | names = [None] * STUDENTS 5 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 6 | 7 | # 학생의 이름과 성적을 함께 입력받음 8 | for i in range(STUDENTS): 9 | names[i] = input(str(i + 1) + "번째 학생의 이름을 입력하여라: ") 10 | for j in range(LESSONS): 11 | grades[i][j] = int(input(str(names[i]) + " 학생의 " + \ 12 | str(j + 1) + "번째 과목 점수를 입력하여라: ")) 13 | 14 | # count 리스트 생성 15 | count = [None] * STUDENTS 16 | for i in range(STUDENTS): 17 | count[i] = 0 18 | for j in range(LESSONS): 19 | if grades[i][j] > 89: 20 | count[i] += 1 21 | 22 | # 점수가 89점 이상인 학생 이름 출력 23 | for i in range(STUDENTS): 24 | if count[i] > 1: 25 | print(names[i]) 26 | -------------------------------------------------------------------------------- /Chapter35/file_35_4_9.py: -------------------------------------------------------------------------------- 1 | months = ["1월", "2월", "3월", "4월", "5월", "6월", \ 2 | "7월", "8월", "9월", "10월", "11월", "12월"] 3 | 4 | kwh = [None] * len(months) 5 | 6 | for i in range(len(months)): 7 | kwh[i] = float(input(months[i] + "의 kWh를 입력하여라: ")) 8 | 9 | for m in range(len(months)): 10 | maximum = kwh[m] 11 | index_of_max = m 12 | for n in range(m, len(months)): 13 | if kwh[n] > maximum: 14 | maximum = kwh[n] 15 | index_of_max = n 16 | 17 | # kwh 내 두 요소 위치의 값을 맞바꾼다. 18 | kwh[m], kwh[index_of_max] = kwh[index_of_max], kwh[m] 19 | # months 내 두 요소 위치의 값을 맞바꾼다. 20 | months[m], months[index_of_max] = months[index_of_max], months[m] 21 | 22 | for i in range(len(months)): 23 | print(months[i], ":", kwh[i]) -------------------------------------------------------------------------------- /Chapter35/file_35_3_4.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 4 | STUDENTS = 100 5 | 6 | names = [None] * STUDENTS 7 | grades = [None] * STUDENTS 8 | for i in range(STUDENTS): 9 | names[i] = input(str(i + 1) + "번째 학생 이름을 입력하여라: ") 10 | 11 | inp = input("점수를 입력하여라: ") 12 | while not re.match(IS_NUMERIC, inp) or int(inp) < 0: 13 | print("부적절한 값입니다.") 14 | inp = input("점수를 입력하여라: ") 15 | grades[i] = int(inp) 16 | 17 | maximum = grades[0] # 혹은 다음과 같이 해결할 수도 있음. 18 | for i in range(1, STUDENTS): # maximum = max(grades) 19 | if grades[i] > maximum: 20 | maximum = grades[i] 21 | 22 | print("가장 높은 점수를 가진 학생:") 23 | for i in range(STUDENTS): 24 | if grades[i] == maximum: 25 | print(names[i]) 26 | -------------------------------------------------------------------------------- /Chapter33/file_33_7_d.py: -------------------------------------------------------------------------------- 1 | a = [3, 6, 10, 2, 1, 12, 4] 2 | a.sort() 3 | for element in a: 4 | print(element, end = " ") # 출력: 1 2 3 4 6 10 12 5 | 6 | print() 7 | 8 | # 내림차순 정렬 9 | a.sort(reverse = True) 10 | for element in a: 11 | print(element, end = " ") # 출력: 12 10 6 4 3 2 1 12 | 13 | print() 14 | b = [ [4, 6, 8], \ 15 | [3, 11, 9], \ 16 | [2, 9, 1] 17 | ] 18 | 19 | # 마지막 열 정렬 20 | b[2].sort() 21 | 22 | for row in b: 23 | for element in row: 24 | print(element, end = " ") # 출력: 4 6 8 25 | # 3 11 9 26 | # 1 2 9 27 | print() 28 | 29 | c = ["Hermes", "Apollo", "Dionysus"] 30 | c.sort() 31 | for element in c: 32 | print(element, end = " ") # 출력: Apollo Dionysus Hermes 33 | -------------------------------------------------------------------------------- /Chapter41/file_41_2_2.py: -------------------------------------------------------------------------------- 1 | PEOPLE = 20 2 | 3 | def my_sort(a, ascending = True): 4 | for m in range(PEOPLE - 1): 5 | for n in range(PEOPLE - 1, m, -1): 6 | if ascending == True: 7 | if a[n] < a[n - 1]: 8 | a[n], a[n - 1] = a[n - 1], a[n] 9 | else: 10 | if a[n] > a[n - 1]: 11 | a[n], a[n - 1] = a[n - 1], a[n] 12 | 13 | def display_list(a): 14 | for i in range(PEOPLE): 15 | print(a[i]) 16 | 17 | # 메인 코드 18 | names = [None] * PEOPLE 19 | for i in range(PEOPLE): 20 | names[i] = input("이름을 입력하여라: ") 21 | 22 | my_sort(names) # 이름을 오름차순으로 정렬 23 | display_list(names) # 정렬된 이름 출력 24 | 25 | my_sort(names, False) # 이름을 내람차순으로 정렬 26 | display_list(names) # 정렬된 이름 출력 -------------------------------------------------------------------------------- /Chapter41/file_41_1_5.py: -------------------------------------------------------------------------------- 1 | import random 2 | ELEMENTS = 100 3 | 4 | def dice(): 5 | return random.randrange(1, 7) 6 | 7 | def search_and_count(x, a): 8 | count = 0 9 | 10 | for i in range(ELEMENTS): 11 | if a[i] == x: 12 | count += 1 13 | return count 14 | 15 | # 메인 코드 16 | 17 | # 1과 6 사이의 무작위 수를 가진 리스트 a 생성 18 | a = [None] * ELEMENTS 19 | for i in range(ELEMENTS): 20 | a[i] = dice() 21 | 22 | # 리스트 n을 생성하고, 리스트 a에 주사위의 각 숫자가 몇 번 나왔는지를 출력 23 | n = [None] * 6 24 | for i in range(6): 25 | n[i] = search_and_count(i + 1, a) 26 | print((i + 1), "이(가)", n[i], "번 나왔습니다.") 27 | 28 | # 리스트 n에서 최댓값 찾기 29 | maximum = n[0] 30 | max_i = 0 31 | for i in range(1, 6): 32 | if n[i] > maximum: 33 | maximum = n[i] 34 | max_i = i 35 | 36 | # 리스트 n에서 가장 많이 나온 숫자를 출력 37 | print((max_i + 1), "이(가) 리스트에서 가장 많이 나옴:", maximum, "번") 38 | -------------------------------------------------------------------------------- /Chapter29/file_29_6_4a.py: -------------------------------------------------------------------------------- 1 | message = input("메시지를 입력하여라: ").lower() 2 | 3 | # 공백, 쉼표, 구두점, 물음표를 제외한 모든 문자를 포함한 문자열을 생성 4 | message_clean = "" 5 | for letter in message: 6 | if letter != " " and letter != "," and letter != "." and letter != "?": 7 | message_clean += letter 8 | 9 | # message_clean의 중간 위치 10 | middle_pos = (len(message_clean) - 1) // 2 11 | 12 | # message_clean의 마지막 위치 13 | j = len(message_clean) - 1 14 | 15 | # 우선, 문장이 회문이라고 가정 16 | palindrome = True 17 | 18 | # for-루프가 문자 하나씩 비교 19 | for i in range(middle_pos + 1): 20 | left_letter = message_clean[i] 21 | right_letter = message_clean[j] 22 | # 적어도 문자 쌍 중에 어느 하나라도 검증에 실패한다면, 23 | # palindrome 변수를 False로 설정 24 | if left_letter != right_letter: 25 | palindrome = False 26 | j -= 1 27 | 28 | # 변수 palindrome이 여전히 True이면 29 | if palindrome == True: 30 | print("이 메시지는 회문입니다.") 31 | -------------------------------------------------------------------------------- /Chapter35/file_35_6_5.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | ATHLETES = 20 4 | SHOTS = 6 5 | 6 | # 리스트 names와 points에 값을 입력받는다. 7 | names = [None] * ATHLETES 8 | points = [ [None] * SHOTS for i in range(ATHLETES) ] 9 | 10 | for i in range(ATHLETES): 11 | names[i] = input(str(i + 1) + "번째 선수의 이름을 입력하여라: ") 12 | for j in range(SHOTS): 13 | points[i][j] = int(input(str(j + 1) + "번째 화살의 득점을 입력하여라: ")) 14 | 15 | # 리스트 total을 생성한다. 16 | total = [] 17 | for row in points: 18 | total.append(math.fsum(row)) 19 | 20 | # 리스트 names와 total을 정렬한다. 21 | for m in range(1, ATHLETES): 22 | for n in range(ATHLETES - 1, m - 1, -1): 23 | if total[n] > total[n - 1]: 24 | total[n], total[n - 1] = total[n - 1], total[n] 25 | names[n], names[n - 1] = names[n - 1], names[n] 26 | 27 | # 금메달, 은메달, 동메달 수여자를 출력한다. 28 | for i in range(3): 29 | print(names[i], "\t", total[i]) -------------------------------------------------------------------------------- /Chapter41/file_41_2_3.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | 4 | def get_consumption(): 5 | inp = input("전력 소비량을 입력하여라(kWh): ") 6 | while not re.match(IS_NUMERIC, inp) or int(inp) < 0: 7 | print("오류: 올바르지 않은 입력값입니다.") 8 | inp = input("양수를 입력하여라: ") 9 | return int(inp) 10 | 11 | 12 | def find_amount(kwh): 13 | if kwh <= 400: 14 | amount = kwh * 110 15 | elif kwh <= 2000:0 16 | amount = 400 * 110 + (kwh - 400) * 220 17 | elif kwh <= 4000: 18 | amount = 400 * 110 + 1100 * 220 + (kwh - 1500) * 350 19 | else: 20 | amount = 400 * 110 + 1100 * 220 + 1500 * 350 + (kwh - 3000) * 500 21 | 22 | amount += 0.26 * amount 23 | return amount 24 | 25 | # 메인 코드 26 | while True: 27 | kwh = get_consumption() 28 | print("총 전기요금:", find_amount(kwh)) 29 | answer = input("반복할까요?") 30 | if answer.upper() != "YES": break 31 | -------------------------------------------------------------------------------- /Chapter39/file_39_4b.py: -------------------------------------------------------------------------------- 1 | ELEMENTS = 10 2 | 3 | def get_list(a): 4 | aux_list = [None] * ELEMENTS 5 | 6 | # 리스트를 보조 리스트에 복사한다. 7 | for m in range(ELEMENTS): 8 | aux_list[m] = a[m] 9 | 10 | # 보조 리스트를 정렬한다. 11 | for m in range(1, ELEMENTS): 12 | element = aux_list[m] 13 | n = m 14 | while n > 0 and aux_list[n - 1] > element: 15 | aux_list[n] = aux_list[n - 1] 16 | n -= 1 17 | aux_list[n] = element 18 | 19 | ret_list = [aux_list[0], aux_list[1], aux_list[2]] 20 | return ret_list 21 | 22 | # 메인 코드 23 | names = ["도시1", "도시2", "도시3", "도시4", "도시5", \ 24 | "도시6", "도시7", "도시8", "도시9", "도시10"] 25 | 26 | t = [75, 73, 78, 70, 71, 74, 72, 69, 79, 77] 27 | 28 | low = get_list(t) 29 | print("가장 낮은 온도: ", low[0], low[1], low[2]) 30 | 31 | # 이 단계에서 리스트 t는 정렬되어 있지 않음 32 | for i in range(ELEMENTS): 33 | print(t[i], "\t", names[i]) 34 | -------------------------------------------------------------------------------- /Chapter35/file_35_4_11.py: -------------------------------------------------------------------------------- 1 | CARS = 10 2 | LAPS = 20 3 | 4 | # 이름과 경과 시간을 함께 입력받는다. 5 | names = [None] * CARS 6 | elapsed_times = [ [None] * LAPS for i in range(CARS) ] 7 | for i in range(CARS): 8 | names[i] = input(str(i + 1) + "번째 운전자의 이름을 입력하여라: ") 9 | for j in range(LAPS): 10 | elapsed_times[i][j] = float(input(str(j + 1) + \ 11 | "번째 바퀴의 경과 시간을 입력하여라: ")) 12 | 13 | # 리스트 elapsed_times를 정렬한다. 14 | for i in range(CARS): 15 | for m in range(1, LAPS): 16 | element = elapsed_times[i][m] 17 | n = m 18 | while n > 0 and elapsed_times[i][n - 1] > element: 19 | elapsed_times[i][n] = elapsed_times[i][n - 1] 20 | n -= 1 21 | elapsed_times[i][n] = element 22 | 23 | # 가장 오래 걸린 경과 시간 세 개를 출력한다. 24 | for i in range(CARS): 25 | print(names[i], "의 가장 오래 걸린 경과 시간") 26 | print("-------------------------------------") 27 | for j in range(3): 28 | print(elapsed_times[i][j]) -------------------------------------------------------------------------------- /Chapter35/file_35_1_4a.py: -------------------------------------------------------------------------------- 1 | COLUMNS = 20 2 | ROWS_OF_A = 10 3 | ROWS_OF_B = 30 4 | ROWS_OF_NEW = ROWS_OF_A + ROWS_OF_B 5 | 6 | # 입력받은 값을 리스트 a에 저장한다. 7 | a = [ [None] * COLUMNS for i in range(ROWS_OF_A) ] 8 | for i in range(ROWS_OF_A): 9 | for j in range(COLUMNS): 10 | a[i][j] = float(input()) 11 | 12 | # 입력받은 값을 리스트 b에 저장한다. 13 | b = [ [None] * COLUMNS for i in range(ROWS_OF_B) ] 14 | for i in range(ROWS_OF_B): 15 | for j in range(COLUMNS): 16 | b[i][j] = float(input()) 17 | 18 | # 리스트 new_arr를 저장한다. 19 | new_arr = [ [None] * COLUMNS for i in range(ROWS_OF_NEW) ] 20 | for i in range(ROWS_OF_A): 21 | for j in range(COLUMNS): 22 | new_arr[i][j] = a[i][j] 23 | for i in range(ROWS_OF_B): 24 | for j in range(COLUMNS): 25 | new_arr[ROWS_OF_A + i][j] = b[i][j] 26 | 27 | # 리스트 new_arr를 출력한다. 28 | for i in range(ROWS_OF_NEW): 29 | for j in range(COLUMNS): 30 | print(new_arr[i][j], end = "\t") 31 | print() -------------------------------------------------------------------------------- /Chapter35/file_35_4_4.py: -------------------------------------------------------------------------------- 1 | PEOPLE = 100 2 | # 두 리스트 first_names와 last_names에 저장할 값을 읽어 들인다. 3 | first_names = [None] * PEOPLE 4 | last_names = [None] * PEOPLE 5 | for i in range(PEOPLE): 6 | first_names[i] = input(str(i + 1) + "번째 사람의 영문 이름: ") 7 | last_names[i] = input(str(i + 1) + "번째 사람의 영문 성: ") 8 | 9 | # 리스트 last_names와 first_names를 정렬시킨다. 10 | for m in range(PEOPLE - 1): 11 | for n in range(PEOPLE - 1, m, -1): 12 | if last_names[n] < last_names[n - 1]: 13 | last_names[n], last_names[n - 1] = \ 14 | last_names[n - 1], last_names[n] 15 | first_names[n], first_names[n - 1] = \ 16 | first_names[n - 1], first_names[n] 17 | elif last_names[n] == last_names[n - 1]: 18 | if first_names[n] < first_names[n - 1]: 19 | first_names[n], first_names[n - 1] = \ 20 | first_names[n - 1], first_names[n] 21 | 22 | # 리스트 last_names와 first_names를 출력한다. 23 | for i in range(PEOPLE): 24 | print(last_names[i], "\t", first_names[i]) -------------------------------------------------------------------------------- /Chapter35/file_35_5_9.py: -------------------------------------------------------------------------------- 1 | EVENTS = 20 2 | COUNTRIES = 10 3 | 4 | country_names = [None] * COUNTRIES 5 | event_descriptions = [ [None] * COUNTRIES for i in range(EVENTS) ] 6 | 7 | for j in range(COUNTRIES): 8 | country_names[j] = input(str(j + 1) + "번째 국가를 입력하여라: ") 9 | for i in range(EVENTS): 10 | event_descriptions[i][j] = input(str(i + 1) + \ 11 | "번째 사건의 설명을 입력하여라: ") 12 | 13 | needle = input("겸색할 국가를 입력하여라: ").upper() 14 | 15 | index_position = -1 16 | left = 0 17 | right = EVENTS - 1 18 | found = False 19 | while left <= right and found == False: 20 | middle = (left + right) // 2 21 | 22 | if country_names[middle].upper() > needle: 23 | right = middle - 1 24 | elif country_names[middle].upper() < needle: 25 | left = middle + 1 26 | else: 27 | found = True 28 | index_position = middle 29 | 30 | if found == False: 31 | print("어떤 국가도 찾지 못하였습니다.") 32 | else: 33 | for i in range(EVENTS): 34 | print(event_descriptions[i][index_position]) -------------------------------------------------------------------------------- /Chapter41/file_41_2_1.py: -------------------------------------------------------------------------------- 1 | import re 2 | IS_NUMERIC = "^[-+]?\\d+(\\.\\d+)?$" 3 | PEOPLE = 5 4 | 5 | def get_age(): 6 | inp = input("나이를 입력하여라: ") 7 | while not re.match(IS_NUMERIC, inp) or int(inp) <= 0: 8 | print("오류: 올바르지 않은 나이값입니다.") 9 | inp = input("양수를 입력하여라: ") 10 | return int(inp) 11 | 12 | def find_max(a): 13 | maximum = a[0] 14 | max_i = 0 15 | for i in range(1, PEOPLE): 16 | if a[i] > maximum: 17 | maximum = a[i] 18 | max_i = i 19 | return max_i 20 | 21 | # 메인 코드 22 | first_names = [None] * PEOPLE 23 | last_names = [None] * PEOPLE 24 | ages = [None] * PEOPLE 25 | 26 | for i in range(PEOPLE): 27 | first_names[i] = input("영문 성을 입력하여라(" + str(i + 1) + "): ") 28 | last_names[i] = input("영문 이름을 입력하여라(" + str(i + 1) + "): ") 29 | ages[i] = get_age() 30 | 31 | index_of_max = find_max(ages) 32 | 33 | print("나이가 가장 많은 사람:", last_names[index_of_max], first_names[index_of_max]) 34 | print("나이가 가장 많은 사람의 나이는", ages[index_of_max], "세 입니다.") 35 | -------------------------------------------------------------------------------- /Chapter39/file_39_7b.py: -------------------------------------------------------------------------------- 1 | def part1(i): 2 | while True: 3 | temp1 = input("성별을 입력하세요(" + str(i + 1) + "): ") 4 | sex = temp1.lower() 5 | if sex == "남자" or sex == "여자": break 6 | 7 | return sex 8 | 9 | def part2(): 10 | while True: 11 | temp2 = input("오후에 조깅을 하나요? ") 12 | answer = temp2.lower() 13 | if answer == "예" or answer == "아니요" or answer == "종종": break 14 | 15 | return answer 16 | 17 | def part3(answer, sex, total_yes, female_no): 18 | if answer == "예": 19 | total_yes += 1 20 | 21 | if sex == "여자" and answer == "아니요": 22 | female_no += 1 23 | 24 | return total_yes, female_no 25 | 26 | def part4(total_yes, female_no): 27 | print("긍적적인 답변의 수:", total_yes) 28 | print("여성의 부정적인 답변의 수:", female_no) 29 | 30 | # 메인 코드 31 | total_yes = 0 32 | female_no = 0 33 | for i in range(100): 34 | sex = part1(i) 35 | answer = part2() 36 | total_yes, female_no = part3(answer, sex, total_yes, female_no) 37 | 38 | part4(total_yes, female_no) 39 | -------------------------------------------------------------------------------- /Chapter35/file_35_4_7.py: -------------------------------------------------------------------------------- 1 | TEAMS = 32 2 | PLAYERS = 24 3 | 4 | # 팀 이름, 선수 이름, 선수별 득점수를 함께 읽어 들인다. 5 | t = [None] * TEAMS 6 | p = [ [None] * PLAYERS for i in range(TEAMS) ] 7 | g = [ [None] * PLAYERS for i in range(TEAMS) ] 8 | for i in range(TEAMS): 9 | t[i] = input(str(i + 1) + "번째 팀의 이름을 입력하여라: ") 10 | for j in range(PLAYERS): 11 | p[i][j] = input(str(j + 1) + "번째 선수의 이름을 입력하여라: ") 12 | g[i][j] = int(input(str(j + 1) + "번째 선수의 득점수를 입력하여라: ")) 13 | 14 | # 리스트 g를 정렬한다. 15 | for i in range(TEAMS): 16 | m = 0 17 | swaps = True 18 | while m < PLAYERS - 1 and swaps == True: 19 | swaps = False 20 | for n in range(PLAYERS - 1, m, -1): 21 | if g[i][n] > g[i][n - 1]: 22 | g[i][n], g[i][n - 1] = g[i][n - 1], g[i][n] 23 | p[i][n], p[i][n - 1] = p[i][n - 1], p[i][n] 24 | swaps = True 25 | m += 1 26 | 27 | # 각 팀별 최고 득점자 5명을 출력한다. 28 | for i in range(TEAMS): 29 | print(t[i] + "팀의 최고 득점자") 30 | print("----------------------------------") 31 | for j in range(5): 32 | print(p[i][j], "선수가", g[i][j], "득점을 하였습니다.") 33 | -------------------------------------------------------------------------------- /Chapter39/file_39_2_1.py: -------------------------------------------------------------------------------- 1 | def display_menu(): 2 | print("1. USD를 EUR로 변환") 3 | print("2. USD를 GBP로 변환") 4 | print("3. USD를 JPY로 변환") 5 | print("4. USD를 CAD로 변환") 6 | print("5. 종료") 7 | print("----------------------------------------------") 8 | print("메뉴를 선택하여라: ", end = "") 9 | 10 | def USD_to_EU(value): 11 | return value * 0.72 12 | 13 | def USD_to_GBP(value): 14 | return value * 0.6 15 | 16 | def USD_to_JPY(value): 17 | return value * 102.15 18 | 19 | def USD_to_CAD(value): 20 | return value * 1.1 21 | 22 | # 메인 코드 23 | while True: 24 | display_menu() 25 | choice = int(input()) 26 | 27 | if choice == 5: 28 | print("종료!") 29 | break 30 | else: 31 | amount = float(input("금액을 입력하여라(USD): ")) 32 | if choice == 1: 33 | print(amount, "USD =", USD_to_EU(amount), "EUR") 34 | elif choice == 2: 35 | print(amount, "USD =", USD_to_GBP(amount), "GBP") 36 | elif choice == 3: 37 | print(amount, "USD =", USD_to_JPY(amount), "JPY") 38 | elif choice == 4: 39 | print(amount, "USD =", USD_to_CAD(amount), "CAD") 40 | -------------------------------------------------------------------------------- /Chapter35/file_35_6_4.py: -------------------------------------------------------------------------------- 1 | STUDENTS = 10 2 | LESSONS = 5 3 | 4 | # 리스트 names와 grades로 값을 입력받는다. 5 | names = [None] * STUDENTS 6 | grades = [ [None] * LESSONS for i in range(STUDENTS) ] 7 | 8 | for i in range(STUDENTS): 9 | names[i] = input(str(i + 1) + "번째 학생의 이름을 입력하여라: ") 10 | for j in range(LESSONS): 11 | grades[i][j] = int(input(str(j + 1) + "번째 과목의 성적을 입력하여라: ")) 12 | 13 | # 리스트 average를 생성한다. 14 | average = [None] * STUDENTS 15 | for i in range(STUDENTS): 16 | average[i] = 0 17 | for j in range(LESSONS): 18 | average[i] += grades[i][j] 19 | average[i] /= LESSONS 20 | 21 | # 리스트 average와 names를 정렬한다. 22 | for m in range(STUDENTS - 1): 23 | for n in range(STUDENTS - 1, m, -1): 24 | if average[n] > average[n - 1]: 25 | average[n], average[n - 1] = average[n - 1], average[n] 26 | names[n], names[n - 1] = names[n - 1], names[n] 27 | elif average[n] == average[n - 1]: 28 | if names[n] < names[n - 1]: 29 | names[n], names[n - 1] = names[n - 1], names[n] 30 | 31 | # 리스트 names와 average를 출력한다. 32 | for i in range(STUDENTS): 33 | print(names[i], "\t", average[i]) -------------------------------------------------------------------------------- /Chapter35/file_35_5_10.py: -------------------------------------------------------------------------------- 1 | EVENTS = 20 2 | COUNTRIES = 10 3 | 4 | country_names = [None] * COUNTRIES 5 | event_descriptions = [ [None] * COUNTRIES for i in range(EVENTS) ] 6 | event_years = [ [None] * COUNTRIES for i in range(EVENTS) ] 7 | 8 | for j in range(COUNTRIES): 9 | country_names[j] = input(str(j + 1) + "번째 국가 이름을 입력하여라: ") 10 | for i in range(EVENTS): 11 | event_descriptions[i][j] = input(str(i + 1) + \ 12 | "번째 사건에 대한 설명을 입력하여라: ") 13 | event_years[i][j] = int(input(str(i + 1) + \ 14 | "번째 사건에 대한 연도를 입력하여라: ")) 15 | 16 | needle = int(input("검색할 연도를 입력하여라: ")) 17 | row_index = -1 18 | 19 | for j in range(COUNTRIES): 20 | top = 0 21 | bottom = EVENTS - 1 22 | found = False 23 | while top <= bottom and found == False: 24 | middle = (top + bottom) // 2 25 | 26 | if event_years[middle][j] > needle: 27 | bottom = middle - 1 28 | elif event_years[middle][j] < needle: 29 | top = middle + 1 30 | else: 31 | found = True 32 | row_index = middle 33 | 34 | if found == False: 35 | print(country_names[j], "에 대한 어떤 사건도 발견하지 못했습니다.") 36 | else: 37 | print("국가:", country_names[j]) 38 | print("연도:", event_years[row_index][j]) 39 | print("사건:", event_descriptions[row_index][j]) -------------------------------------------------------------------------------- /Chapter35/file_35_5_6.py: -------------------------------------------------------------------------------- 1 | CITIES = 10 2 | CITIZENS = 30 3 | 4 | phone_num = [ [None] * CITIZENS for i in range(CITIES) ] 5 | ans = [ [None] * CITIZENS for i in range(CITIES) ] 6 | 7 | for i in range(CITIES): 8 | print((i + 1), "번째 도시") 9 | for j in range(CITIZENS): 10 | phone_num[i][j] = input(str(j + 1) + "번째 시민의 전화번호를 입력하여라: ") 11 | ans[i][j] = input(str(j + 1) + "번째 시민의 설문 답변을 입력하여라: ").upper() 12 | while ans[i][j] != "Y" and ans[i][j] != "N" and ans[i][j] != "S": 13 | ans[i][j] = input("잘못된 답변입니다. 답변을 다시 입력하여라: ").upper() 14 | 15 | needle = input("검색할 전화번호를 입력하여라: ") 16 | 17 | found = False 18 | position_i = -1 19 | position_j = -1 20 | i = 0 21 | while i <= CITIES - 1 and found == False: 22 | j = 0 23 | while j <= CITIZENS - 1 and found == False: 24 | if phone_num[i][j] == needle: 25 | found = True 26 | position_i = i 27 | position_j = j 28 | j += 1 29 | i += 1 30 | 31 | if found == False: 32 | print("전화번호를 찾지 못했습니다.") 33 | else: 34 | print("전화번호", phone_num[position_i][position_j]) 35 | print("를 찾았습니다. '", end = "") 36 | 37 | if ans[position_i][position_j] == "Y": 38 | print("예", end = "") 39 | elif ans[position_i][position_j] == "N": 40 | print("아니요", end = "") 41 | else: 42 | print("불확실", end = "") 43 | 44 | print("' 설문결과입니다.") --------------------------------------------------------------------------------