문자열을 처리하는 용도로도 반복문이 많이 사용됩니다. 문자열의 각 문자들을 꺼내 출력하는 코드를 작성하면 다음과 같습니다.
name = "seulgi"
index = 0
while index < len(name):
letter = name[index]
print(letter, end = " ")
index += 1
<실행 결과>
s e u l g i
문자열도 시퀀스의 일종이라는 것을 이용하면 더 쉬운 코드도 작성이 가능합니다.
name = "seulgi"
for char in name: # char에 하나의 문자가 저장됩니다.
print(char, end=" ")
<실행 결과>
s e u l g i
문자열을 받아 모음을 전부 없애는 코드는 다음과 같이 작성할 수 있습니다.
s = input('문자열을 입력하세요 : ')
vowels = "aeiouAEIOU"
result = ""
for letter in s: # 문자에 대하여 반복합니다.
if letter not in vowels: # 문자가 모음 리스트에 있지 않으면, result에 문자를 추가합니다.
result += letter
print(result)
<실행 결과>
문자열을 입력하세요 : redvelvet
rdvlvt
문자열을 입력하세요 : seulgi
slg
문자열 중에서 자음과 모음의 개수를 집계하는 프로그램을 작성하여 봅시다. 이 프로그램은 파이썬의 강력한 기능을 유감없이 보여줍니다.
original = input('문자열을 입력하시오 : ')
word = original.lower() # 소문자로 변환합니다
vowels = 0
consonants = 0
if len(original) > 0 and original.isalpha(): # 문자가 하나라도 있고 알파벳이면
for char in word: # 각 문자에 대하여 반복합니다
if char in 'aeiou': # 모음이면
vowels += 1 # 모음의 개수를 1개 증가합니다.
else: # 그렇지 않으면
consonants += 1 # 자음의 개수를 1개 증가합니다.
print("모음의 개수 :", vowels)
print("자음의 개수 :", consonants)
<실행 결과>
문자열을 입력하시오 : redvelvet
모음의 개수 : 3
자음의 개수 : 6
문자열을 입력하시오 : seulgi
모음의 개수 : 3
자음의 개수 : 3
모음을 찾는 부분을 다음과 같이 작성할 수도 있으나 상당히 길어집니다.
word = input('문자열을 입력하세요 : ')
vowels = 0
consonants = 0
for char in word:
if char in ('a', 'e', 'i', 'o', 'u'): # 튜플이라는 변경할 수 없는 리스트입니다.
vowels += 1
else:
consonants += 1
print("모음의 개수 :", vowels)
print("자음의 개수 :", consonants)
<실행 결과>
문자열을 입력하시오 : redvelvet
모음의 개수 : 3
자음의 개수 : 6
문자열을 입력하시오 : seulgi
모음의 개수 : 3
자음의 개수 : 3
만약 모음의 위치를 전부 출력해야 한다면 다음과 같이 위치를 나타내는 변수를 사용하여야 합니다.
original = input('문자열을 입력하시오 : ')
word = original.lower()
if len(original) > 0 and original.isalpha():
for i in range(len(word)):
if word[i] in 'aeiou':
print(i)
<실행 결과>
문자열을 입력하시오 : redvelvet
1
4
7
문자열을 입력하시오 : seulgi
1
2
5
난수를 수학 문제를 해결하는데 사용하는 것을 Monte Carlo 방법이라고 합니다. 기초 기하학에서 아래의 이유로 원의 면적에서 사각형의 면적을 나누면 임을 알고 있습니다.

Monte Carlo 방법은 사각형 안에 랜덤하게 점들을 선택하여 얼마나 많은 점이 원 안에 떨어지는지를 계산합니다.
전체 점들 중에서 원 안에 떨어지는 점들의 비율을 알면 의 값을 계산할 수 있습니다. 이것을 이용하여 파이의 값을 계산하는 프로그램을 작성해봅시다.

from random import *
from math import sqrt
# n은 전체 점의 개수입니다.
n = int(input("반복횟수를 입력하시오 : "))
inside = 0
for i in range(0, n):
x = random() # random()은 0.0에서 1.0 사이의 난수를 반환합니다.
y = random()
# 원점으로부터의 거리가 1.0 이하이면 원 안에 있는 점입니다.
if sqrt(x * x + y * y) <= 1:
inside += 1
pi = 4 * inside / n
print(pi)
<실행 결과>
반복횟수를 입력하시오 : 1000000
3.141776
1. 문자열을 조사하여 알파벳 문자의 개수, 숫자의 개수, 스페이스의 개수를 출력하는 프로그램을 작성해봅시다.
<실행 결과>
문자열을 입력하시오 : RedVelvet(Debut 20140801) is one of the most famous girlgroup in the World!
알파벳 문자의 개수 : 53
숫자 문자의 개수 : 8
스페이스 문자의 개수 : 11
2. 봉민이는 옷을 사려 인터넷 뱅킹을 이용하던 중 계좌번호를 입력할 때 "810-199701-24607" 과 같이 "-" 을 사용하면 안 된다는 경고를 받았습니다.
사용자로부터 "-"가 포함된 계좌 번호를 받아 "-"을 삭제한 문자열을 만들어봅시다.
<실행 결과>
계좌번호를 입력하세요 : 810-199701-24607
81019970124607
3. 봉민이는 모두의 마블을 하다 문득 2개의 주사위를 던져 나오는 합의 확률을 계산해보고 싶어졌습니다.
파이썬으로 반복문을 이용한 컴퓨터 시뮬레이션 프로그램을 만들어봅시다.
<실행 결과>
주사위 실험 반복 횟수 : 100000
2 2795
3 5384
4 8356
5 11266
6 13701
7 16702
8 13987
9 11165
10 8198
11 5610
12 2836
1 부터 6 사이의 난수를 생성하는 코드는 아래와 같습니다.
from random import randint
randNum = randint(1, 6)
print(randNum)