본문 바로가기
개발일지/Python

2022.01.31 파이썬 정복 8장 문자열 관리

by 개발에정착하고싶다 2022. 1. 31.
320x100

# 2. s = "universe" 일때 한 행에 한 글자씩 출력하는 코드를 작성해라
# # 시도조차 못해봄. 수식 기억이 안나서.

s = "universe"
for i in s:
    print(i)
# 이렇게 보니 진짜 멍청했다. 이 간단한것이 기억이 안나다니.. 계속 연습하자.

# 5. domain 변수는 임의의 웹주소를 가지고 있다. 이 도메인이 .kr로 끝나는 한국 도메인인지 확인하는 코드를 작성하라.
# # 내가 푼 코드 - 성공
# korea_addr = input("도메인 주소를 입력해 주세요.: ")
#
# if korea_addr[-3:] == ".kr":
#     print("한국 주소입니다.")
# else:
#     print("한국주소 아닙니다.")


# 6. sosi 문자열에 "태연, 서연, 수영"이름이 저장되어 있다. 각 기수의 이름을 추출하여 "사랑해"와 함께 출력하라.
#  내가 푼 코드 - 실패
# 결정적으로 split으로 나누긴 했으나, 사용하기에 유의미한 나누기는 아닌것 같고, 이것을 각각 a+사랑해 형식으로 해주려고 했는데 수식이 기억안난다.
# o_my_girl = "아린,아정,비니"
#
# preparing = o_my_girl.split()
# for i in preparing:
#     print("%s[0],%s[1],%s[2]"+"사랑해".i)

# 해답코드
sosi = "태연,서연,수영"
singer = sosi.split(",")
for i in singer:
    print(i,"사랑해")

# 7. "아침에 커피로 시작하고 밥 먹고 커피 마시고 자기 전에도 커피를 마신다." 문자열에서 모든 커피를 우유로 바꾸어 출력하라
# 내가 푼 코드 - 실패
# 결정적으로 단어 스위치 하는 명령어가 뭔지 몰라서 못풀었다.
# s = "아침에 커피로 시작하고 밥 먹고 커피 마시고 자기전에도 커피를 마신다."

# 해답 슬쩍 보고 응용해본 코드
# 해답 코드의 핵심은 replace였다.
s = "아침에 커피로 시작하고 밥 먹고 커피 마시고 자기전에도 커피를 마신다."
s.replace("커피","우유") # s = 이란 식으로 s의 내용을 대체해주지 못한 것이 문제였다.
print(s)

# 해답코드
s = "아침에 커피로 시작하고 밥 먹고 커피 마시고 자기전에도 커피를 마신다."
s = s.replace("커피","우유")
print(s)
# 8. 임의의 주민등록번호 901231-1914983에서 생년과 성별을 추출하여 "90년생 남자"라는 결과를 출력하라.
# 내가 푼 코드 - 실패
# 결정적으로 해당 변수에 저장된 값 전부를 사용하는건 어렵지가 않은데, 부분적으로 인덱스처럼 끌고와서 합치는것은 기억이 나질 않는다.
# numbers = str(901231-1914983)

# print(f"{0:2}년생 남자".numbers)

# 해답코드
jumin = "9012310-1914983" #숫자처럼 쓰질 않고 아예 str로 써버리더라.
birth = jumin[:2]
if int(jumin[8])%2 == 0: #1.  위의 적어준 값은 str이였는데 str은 수식에 활용이 안되니깐 다시 int 정수로 바꿔준다. #2. 주민번호 두번째 영역의 첫번째 숫자 인덱스 끌고 오는 숫자가 잘못되었어서 에러가 계속 났었다.
    gender = "여자" # 나는 각각의 출력 값으로 구하려고 했지만 합쳐서 하는게 해설의 취지에 맞더라.
else:
    gender = "남자"
print("%s년생 %s"%(birth,gender))
# 9. sum 변수에 총점이 356이 저장되어 있고, avg 변수에 평균 89.2785가 저장되어 있다.
# 두 변수의 값을 한 문자열로 조립하여 출력하되 평균은 반올림하여 소수점 2자리만 출력하라.

# 내가 푼 수식 - 실패
# 결정적인 인덱스 형식으로 소수점 두자리까지 끌어오는 명령어가 기억이 안난다.
# sum = 356
# avg = 89.2785
#
# print(sum+avg)

# 해답 수식
sum = 356
avg = 89.2785
print("총점:%d, 평균:%.2f" % (sum,avg)) # 아직도 보면 알겠는데 적응이 안되서 활용을 못하겠다.

# 연습수식

sum = 1111
avg = 89.2131231
print("총점:%d, 평균:%f"%(sum,avg)) # 단순히 원리적으로 봤을때, %d는 정수, %f는 실수, %s는 문자 이다. 그리고 이를 연결하는 포매팅은 맨 뒤의 % (1,2,3)으로써 연결된다.
# 하지만 약간 심화된 버전이 다음 수식이다.
print("총점:%10d, 평균:%.2f"%(sum,avg)) # 플로팅의 경우 f의 앞에 .2를 해줌으로써 소수점 2번째 자리까지! 정확히는 float 앞이 아니더라도 이 수식을 써줄땐
# %"여기"d,f,s "여기"영역에 해당하는 부분에 1의 자리에 해당하는 만큼 앞에서 띄어지고 0.1이하의 경우에 float는 소수점을 표기해준다.
300x250