본문 바로가기
커먼의저주...

[python] 2번째 과제

by 마라민초닭발로제 2022. 10. 10.

2주차 과제

 

2. 자기소개서에 있는 문장에서 생년월일을 찾기

  • –  자기소개서의 첫 줄에 자신의 이름과 생년월일을 넣도록 했다. 자기소개서에 서 생년월일 부분을 추출하여 화면에 표시하는 프로그램을 작성하라.
  • –  소개서를 작성한 사람은 모두 200011일 이후에 태어났다.
  • –  생년월일은 다음의 형식으로 넣어야 한다고 사전에 공지했다.
    • 제 이름은 홍길동이고 2001106일에 태어났습니다.
    • 안녕하세요 홍길동입니다. 2001/10/06 이 제 생년월일입니다.
    • 홍길동입니다. 생년월일은 20011006입니다.
  • –  실행예)
    문장을 입력하세요 : 제 이름은 홍길동이고 2001106일에 태어났습니다. 문장을 입력하세요 : 홍길동입니다. 생년월일은 20011006입니다.
  • 분석된 생년월일 : 2001/10/06
  • 분석된 생년월일 : 2001/10/06
import re
inputValue = input()
birthNumbers = re.sub(r'[^0-9]', '', inputValue)

teagetString = str(birthNumbers)
print('분석된 생년월일 : ', birthNumbers[:4], '/', birthNumbers[4:6], '/', birthNumbers[6:])

 

3. 수식을 입력하면 합계를 표시하는 프로그램을 작성하라. , 덧셈과 뺄셈만 가능하다. eval을 사용해서는 안 된다.

실행 예)
수식을 입력하세요 : 12+345+6789
= 7146
수식을 입력하세요 : 34-12+5
= 27
수식을 입력하세요 : 334+123-32+245-6-32 = 632

value = input()
temp1 = 0
total = 0
#+12+345+6789
prevval = '+'
for i in value + '+' :
  #문자열이 + 나 -일때
  if i == '+' or i == '-' :
    #이전에 +가 나왔는지 -가 나왔는지
    if prevval == '+':
      total += temp1
    elif prevval == '-' :
      total -= temp1
    #이번 i가 +인지 -인지
    if i == '+' :
      prevval = '+'
    else :
      prevval = '-'
    temp1 = 0
    continue
  #그냥 숫자가 나왔을 때
  temp1 = temp1 * 10 + int(i)
print(total)

 

 

4. 전화번호부 프로그램을 작성하라. 전화번호부는 이름을 입력 하면 전화번호를 찾아 화면에 표시하고,

  • –  딕셔너리를 반드시 이용하라.
  • –  홍길동(010-4444-5555), 김중앙(010-9191-8181). 심청(010-
  • 3232-5454)을 기본 데이터로 넣는다.
  • –  이름을 넣으면 해당 사용자의 전화번호를 표시한다.
  • –  이름의 일부만 넣으면 이름의 일부에 해당하는 사용자의 전화번호를 표시한다.
  • –  이름에 add 라고 넣으면 새로운 전화번호를 추가한다.
dic={'홍길동':'010-4444-5555','김중앙':'010-9191-8181','심청':'010-3232-5454'}

while True:
    print("이름>> ",end="")
    user_input=input()
    dicKeys = dic.keys()
    #이름>> dict_keys(['홍길동', '김중앙', '심청'])
    #user_input = "김중"
    for i in dicKeys : 
      if user_input in i :
        keyValue = i    
    if keyValue in dic :
      print(dic[keyValue])


    elif user_input == "add" :
        print("이름은? ",end='')
        key = input()
        print("전화번호는? ",end='')
        value = input()
        dic[key] = value  #딕셔너리에 추가하는 법, 일부 입력 시에 작동시키는 
        print(key,end=" ")
        print("전화번호가 추가되었습니다.")
        print(dic.keys)
    else :
        print("찾을 수 없습니다.")
        break
    keyValue = 0

 

 

5. 사용자에게 정수 숫자를 입력 받은 뒤,

천단위로,를표시하여숫자를나타내고, 한글로 숫자를 나타내라.
입력받는 숫자는 99999 이하이다.

실행 예)

숫자는? 12345 12,345 원 만이천삼백사십오원 숫자는? 10006 10,006

만육 원

 

list1 = ['','일', '이', '삼', '사', '오', '육', '칠', '팔', '구']
list2 = ['', '십', '백', '천', '만']

list1[1]
list1[int('1')]
inputval = input()
korValue = []
# 12345 % 1000 = 345
#str(345)[0] = '3'
#int(str(345)[0]) = 3
#range(inputval) => 0...2 len(range) = 3
for i in range(1, len(inputval) + 1) :
  temp = int(inputval) % (10 ** i)
  insertValue = list1[int(str(temp)[0])] + list2[i-1]
  korValue.insert(0, insertValue)
print(format(int(inputval), ',') + '원')
for i in korValue :
  print(i, end="")
print('원')

 

6. 사용자 혼자 끝말잇기 게임을 한다.

  • –  사용자에게 3~6글자 단어를 입력 받는다.
  • –  해당 단어들이 끝말잇기에 해당되면 점수를 1점을 얻는다.
  • 단어의길이가안맞거나이미나온단어를입력하거나끝말잇기가안되면1 점 잃는다.

apple 로 시작한다. 게임은 10회 반복한다.

실행 예)

단어(apple) : ear
1점 획득. 현재 점수 1
단어
(ear) : radio
1점 획득. 현재 점수 2
단어
(radio) : audio
끝말잇기가 안됩니다. 1점 차감. 현재 점수 1점 단어(radio) : orange
1점 획득. 현재 점수 2
단어
(orange) : ear
이미 나온 단어입니다. 1점 차감. 현재 점수 1

computer_win_count = 0
used = ['apple']
#words = eclips
for i in range(10) :
  words = input()
  if words[0] != used[-1][-1]:
      print("끝말잇기가 안됩니다. 1점 차감.")
      computer_win_count -= 1
      print("현재 점수",end=' ')
      print(computer_win_count, "점")
  elif words[0] in used:
      print("이미 나온 단어입니다. 1점 차감.")
      computer_win_count -= 1
      print("현재 점수",end=' ')
      print(computer_win_count, "점")
  else:
      used.append(words)
      print("1점 획득.")
      computer_win_count += 1
      print("현재 점수",end=' ')
      print(computer_win_count, "점")

 

'커먼의저주...' 카테고리의 다른 글

[Jsp] Intellij 와 Jsp  (0) 2022.11.17
[Macbook] 한영전환 딜레이 없애기  (0) 2022.10.20
[python] 1주차 과제  (2) 2022.10.06
SQL Developer 무한로딩 해결법  (0) 2022.10.02
첫 시작  (0) 2022.09.27