answer8_2.py
sentence = input("文章を入力して下さい:")
# XXX 以下ではsentenceに「★」が含まれないと仮定している
s1 = sentence.replace("、", "★")
s2 = s1.replace("。", "、")
replaced = s2.replace("★", "。")
print(replaced)
# 章末問題 8章【2】解答例
#
# いきなり「、」を「。」に置き換えるなどしてしまうと、
# 「、」と「。」がすべて「。」になってしまって
# うまくいかないので、一度「、」を「★」にしてから、
# 「。」を「、」にし、「★」を「。」にしています。
#
# 、→★
# 。→、
# ★→。
#
# このやり方は、元の文字列に入っていない文字を使う必要があります。
# この解答例では、元の文字列に「★」が入っているとうまくいきません。
#
# 元の文字列に入っていない文字がわからない場合には、
# 以下のように1文字ずつ見て置き換える方法が使えます。
# 文字列をfor文でイテラブルとして扱うと1文字ずつ得られるのを使っています。
#
# sentence = input("文章を入力して下さい:")
# s = ""
# for c in sentence:
# if c == "、":
# s += "。"
# elif c == "。":
# s += "、"
# else:
# s += c
# print(s)
#
# また、少しとんちのようですが、inputはキーボードから1行を読んで
# 返すので、その結果には改行文字(\n)は含まれません。
# そのため、最初のコードの "★" を "\n" にすると、
# どんな入力に対してもうまく動きます。
#
# また、本書では説明しませんが、文字列についての
# str.maketransとtranslateというメソッドを使うと、
# 以下のようによりシンプルに実現できます。
#
# table = str.maketrans("、。", "。、")
# sentence = input("文章を入力して下さい:")
# print(sentence.translate(table))