TIL (today I learned)

2019-03-10 TIL

grin-quokka 2019. 3. 11. 08:39

    코드잇 ) 프로그래밍 기초 :

     
    • 고급단어장 피드백 수정 후 제출

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      from random import randint
      voca = open('voca.txt''r')
       
      dic = {}
      for content in voca:
          temp = content.strip().split(':')
          dic[temp[0]] = temp[1]
       
      eng = list(dic.keys())
       
      while True:
          random = randint(0len(eng) - 1)
          answer = input(eng[random] + ': ')
          if answer == 'q':
              break
          elif answer != dic[eng[random]]:
              print("아쉽습니다. 정답은 %s입니다." % (dic[eng[random]]))
          else:
              print('맞았습니다!')
       
      voca.close()
      cs

    • 중간점검(로또) 제출

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      from random import randint
       
      # 무작위,1 - 45 사이의 서로 다른숫자 여섯개 뽑기, 오름차순 리스트 리턴
      def generate_numbers():
          list = []
          i = 0
          while i < 6:
              random = randint(145)
              if random not in list:
                  list.append(random)
                  i += 1
          return sorted(list)
       
      # 보너스까지 포함해 7개 숫자 뽑기
      # 정렬된 6개의 당첨 번호와 1개의 보너스 번호 리스트를 리턴
      # 예: [1, 7, 13, 23, 31, 41, 15]
      def draw_winning_numbers():
          list = generate_numbers()
          while True:
              bonus = randint(145)
              if bonus not in list:
                  list.append(bonus)
                  return list
       
       
      # 두 리스트에서 중복되는 숫자가 몇개인지 리턴
      def count_matching_numbers(list1, list2):
          count = 0
          for num in list1:
              if num in list2:
                  count += 1
          return count
       
      # 로또 등수 확인해서 당첨금 리턴
      def check(numbers, winning_numbers):
          match = count_matching_numbers(numbers, winning_numbers[:-1])
          if match == 6:
              return 1000000000
          elif match == 5 and winning_numbers[-1in numbers:
              return 50000000
          elif match == 5:
              return 1000000
          elif match == 4:
              return 50000
          elif match == 3:
              return 5000
          else:
              return 0
      cs

    • 객체 지향 프로그래밍

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      # sns의 유저
      class User:
          # 초기값 설정
          def __init__(self, name, email, password):
              self.name = name
              self.email = email
              self.password = password
       
          # 자기 소개 (이름, 이메일)
          def introduce(self):
              print(("My name is %s") % (self.name))
              print(("My email address is %s") % (self.email))
       
          # 자기 소개 두번
          def introduce_twice(self):
              self.introduce()
              self.introduce()
       
       
      # 테스트
      user1 = User("Young""young@codeit.kr""123456")
      user1.introduce()
      user1.introduce_twice()
      cs

    • 재귀 함수

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      # 1부터 n까지의 합을 리턴
      def triangle_number(n):
          if n == 1:
              return 1
          return triangle_number(n-1+ n
       
      # 테스트: triangle_number(1)부터 triangle_number(10)까지 출력
      for i in range(111):
          print(triangle_number(i))
      cs
    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # n번째 피보나치 수를 리턴
      def fib(n):
          if n == 1 or n == 2:
              return 1
          return fib(n - 2+ fib(n - 1)
       
      # 테스트: fib(1)부터 fib(10)까지 출력
      # 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
      for i in range(111):
          print(fib(i))
      cs
    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      # n의 각 자릿수의 합을 리턴
      def sum_digits(n):
          if n < 10:
              return n
          string = str(n)
          return sum_digits(int(string[:-1])) + int(string[-1])
       
      # 테스트
      print(sum_digits(22541))
      print(sum_digits(92130))
      print(sum_digits(12634))
      print(sum_digits(704))
      print(sum_digits(3755))
      cs

    • 정렬

      • 선택정렬

      • 1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        # 선택 정렬
        def selection_sort(my_list):
            for i in range(len(my_list)):
                min_index = i
                for j in range(i + 1len(my_list)):
                    value = my_list[j]
                    if value < my_list[min_index]:
                        min_index = j
                # 자리 바꾸기
                temp = my_list[i]
                my_list[i] = my_list[min_index]
                my_list[min_index] = temp
            return my_list
         
        # 테스트
        some_list = [113641212]
        selection_sort(some_list)
        print(some_list)
        cs