예전에 SNS에서 영상을 보다가 파이썬으로 Hello, World!를 A에서부터 시작하여 .. Hello, Wb Hello, Wc Hello, Wd Hello, We .... Hello, Worlc!, Hello, World!까지 출력하는 코드를 보고 짜고 싶다고 생각만 했었는데 한번 짜보고 싶어서 만들었고 글을 쓰게 되었다.
코드는 이렇게 된다.
string="Hello, World!"
result=""
for i in range(len(string)):
if string[i] in " ,!":
result += string[i]
print(result)
continue
x='A' if string[i].isupper() else 'a'
while ord(x)<=ord(string[i]):
temp_result=result+x
print(temp_result)
x=chr(ord(x)+1)
result+=string[i]
string은 내가 출력할 문자열이며, check를 위한 문자열이기도 하다.
result를 통해 현재까지 결과를 계속해서 출력한다.
절차적으로 설명해보자.
만약에 문자열에 ' ', ',', '!'와 같은 특수 문자 및 공백의 경우 알파벳을 증가시키면서 출력하지 않아도 되기에 1번만 출력하면 그만이다. 그렇기 때문에 현재 상태를 저장하는 result에만 저장하고 바로 넘어간다.
x는 시작 알파벳으로 각 단어에 대해 시작값을 넣는데, 알파벳이 대문자이고 소문자이고가 32*가 차이나기에 이를 구분해줘야한다. 만약 이를 구분하지 않는다면 이미 대문자의 경우 'a'보다 값이 작기에 문제가 생길 수 있다.
while 조건문은 x의 아스키 코드 값이 현재 문자열 string[i]의 아스키 코드 값보다 작거나 같을 때 루프를 반복하도록 한다.
temp_ result를 통해 현재까지의 결과 result에 x를 더해서 for에서 도는 문자열의 상태를 출력한다.
이후 x는 chr(ord(x) + 1)을 통해 다음 알파벳으로 증가시킨다.
* (97('a'의 아스키코드값)-65('A'의 아스키코드값))