パタトクカシー文字列作成装置 〜python3入門者・解答〜

昨日の問題はいかがでしたか?
今日は答え合わせです。


1. 解答

私が作ったパタトクカシー文字列作成装置のコードは以下のとおり。

import unicodedata

print("パタトクカシー装置に入れる文字列を作ります")

print("単語をカタカナで入力してください")
tango = input('Please enter ')

for c in tango[0]:
   j = unicodedata.east_asian_width(c)
   if 'W' != j:
   	print("単語をカタカナで入力してください")
   	tango = input('Please enter ')

length = len(tango)

print(length, "文字の単語をカタカナで入力してください")
tango_2 = input('Please enter ')

for c in tango_2[0]:
   j = unicodedata.east_asian_width(c)
   if 'W' != j:
   	print(length, "文字の単語をカタカナで入力してください")
   	tango_2 = input('Please enter ')

i = 0
mojiretsu = ""
while i < length:
   mojiretsu = mojiretsu + tango[i] + tango_2[i]
   i = i + 1
print("文字列", mojiretsu)

2. 振り返り

実はこのモジュールも完璧ではありません。

for c in tango[0]:
   j = unicodedata.east_asian_width(c)

上記のコードだと入力した単語の1文字目しか判定しないので、2文字目以降が半角数字でもエラーにならず次へ進んでしまいます。


これを踏まえて以下のように変更すると、

for c in tango:
   j = unicodedata.east_asian_width(c)

「(入力した文字数)− 1 」回分、単語を入力する事態に…

今の私のチカラでは原因究明なりませんでした。

短い単語の入力中に、日本語入力から半角英数字入力に切り替えることはまずないだろうという希望的観測に基づいて、今回はこれにて完成とします。

もっといい方法があると思います。
アドバイスいただけると嬉しいです。


この記事が気に入ったらサポートをしてみませんか?