paiza プログラミング

[Ruby|Python]paiza 標準出力メニュー 【文字列の出力】

paiza_stdout_3

今回はpaiza 標準入力メニューセクション3【文字列の出力】を解説します。

セクション3は、指定された文字列を改行区切り半角スペース区切りで出力する問題です。

本記事で使用しているメソッドについて

解答例で使っているメソッドについて、下記の記事で詳しく解説していますので参考にしてみて下さい。

セクション3:【文字列の出力】

3-STEP1: 1 つの文字列を出力 (paizaランク D 相当)

1個の文字列 "paiza" 出力する問題です。

Ruby解答例

putsメソッドで出力しています。

# 解答例
s = "paiza"
# 出力
puts(s)
Ruby NG解答例

pメソッドを使うとダブルクォーテーション ""も出力してしまいます。

# NG解答例
s = "paiza"
# 出力
p(s)

# ダブルクォーテーションも出力される
# > "paiza"
Python解答例1

printメソッドで出力しています。

# 解答例
s = "paiza"
# 出力
print(s)

 


3-STEP2: 2 つの文字列を出力 (paizaランク D 相当)

2個の文字列 "paiza", "learning" 半角スペース区切りで出力する問題です。

Ruby解答例1

式展開を使って半角スペース区切りの文字列を生成して出力しています。

# 解答例1
s1 = "paiza"
s2 = "learning"
# 出力
puts("#{s1} #{s2}")
Ruby解答例2

+ で半角スペース区切りになるよう文字列を連結して出力しています。

# 解答例2
s1 = "paiza"
s2 = "learning"
# 出力
puts(s1 + " " + s2)
Python解答例1

f文字列を使って半角スペース区切りの文字列を生成して出力しています。

# 解答例1
s1 = "paiza"
s2 = "learning"
# 出力
print(f"{s1} {s2}")
Python解答例2

+ で半角スペース区切りになるよう文字列を連結して出力しています。

# 解答例2
s1 = "paiza"
s2 = "learning"
# 出力
print(s1 + " " + s2)

 


3-STEP3: 入力された 2 つの文字列を出力 (paizaランク D 相当)

2行で入力された2個の文字列改行区切りで出力する問題です。

Ruby解答例

gets.chompを2回実行して末尾の改行を除いた2個の文字列を取得し、各文字列をputsメソッドで出力しています。

# 解答例
s = gets.chomp
t = gets.chomp
# 出力
puts(s)
puts(t)
Python解答例

inputメソッドを2回実行して末尾の改行を除いた2個の文字列を取得し、各文字列をprintメソッドで出力しています。

# 解答例
s = input()
t = input()
# 出力
print(s)
print(t)

 


3-STEP4: 入力された 10 個の文字列を出力 (paizaランク D 相当)

10行で入力された10個の文字列半角スペース区切りで出力する問題です。

Ruby解答例1

timesメソッドで10回のループを設定し、mapメソッドで末尾の改行を除いた文字列の配列を生成して配列aryに格納し、joinメソッドで半角スペース区切りの文字列を生成して出力しています。

# 解答例1
# 10 行の入力を配列 ary に格納
ary = 10.times.map { gets.chomp }
# 出力
puts(ary.join(" "))
Ruby解答例2

空の文字列変数sを用意し、timesメソッドで10回のループを設定します。
ループの中で文字列を受け取って末尾の改行を除き、変数sに追加、さらに最後の入力以外は半角スペースも追加します。
ループを抜けたら文字列sを出力します。

# 解答例3
# 10 行の入力
s = ""
10.times do |i|
  s += gets.chomp
  # 最後の入力に半角スペースは追加しない
  break if i == n - 1
  s += " "
end
# 出力
puts(s)
Python解答例1

リスト内包表記で10行分の入力文字列で配列aryを作成し、print(*ary)でアンパックして出力しています。
アンパックして出力すると、配列の要素を半角スペース区切りで出力してくれます。

# 解答例1
# 10 行の入力を配列 ary に格納
ary = [input() for _ in range(10)]
# 出力
print(*ary)
Python解答例2

空の文字列変数sを用意し、rangeメソッドで10回のループを設定します。
ループの中で文字列を受け取って末尾の改行を除き、変数sに追加、さらに最後の入力以外は半角スペースも追加します。
ループを抜けたら文字列sを出力します。

# 解答例2
n = 10
# 10 行の入力
s = ""
for i in range(n):
    s += input()
    # 最後の入力に半角スペースは追加しない
    if i == n - 1:
        break
    s += " "
# 出力
print(s)

 


3-FINAL: 【文字列の出力】入力された 10 個の文字列を出力 (paizaランク D 相当)

半角スペース区切りの10個の文字列改行区切りで出力する問題です。

Ruby解答例1

gets.splitで半角スペースで分割した要素を配列aryに格納し、putsメソッドで出力しています。

# 解答例1
# 入力
ary = gets.split
# 出力
puts(ary)
Ruby解答例2

gets.splitで半角スペースで分割した要素を配列aryに格納し、eachメソッド配列aryの先頭から順に参照し、putsメソッドで出力しています。

# 解答例2
# 入力
ary = gets.split
# 出力
ary.each do |s|
  puts(s)
end
Ruby解答例3

gets.splitで半角スペースで分割した要素を配列aryに格納し、uptoメソッドインデックスiを0からary.length-1の間でカウントアップして、ary[i]で先頭から順に参照し、putsメソッドで出力しています。

# 解答例3
# 入力
ary = gets.split
# 出力
0.upto(ary.length - 1) do |i|
  puts(ary[i])
end
Python解答例1

input().split()で半角スペースで分割した要素を配列aryに格納し、リスト内包表記で配列aryの先頭から順に参照し、printメソッドで出力しています。

# 解答例1
# 入力
ary = input().split()
# 出力
[print(s) for s in ary]
Python解答例2

input().split()で半角スペースで分割した要素を配列aryに格納し、for s in ary:配列aryの先頭から順に参照し、printメソッドで出力しています。

# 解答例2
# 入力
ary = input().split()
# 出力
for s in ary:
    print(s)
Python解答例3

input().split()で半角スペースで分割した要素を配列aryに格納し、for i in range(len(ary)):インデックスiを0からlen(ary)-1の間でカウントアップして、ary[i]で先頭から順に参照し、putsメソッドで出力しています。

# 解答例3
# 入力
ary = input().split()
# 出力
for i in range(len(ary) - 1):
    print(ary[i])

今回のまとめ

文字列も数値も基本的な出力方法は一緒です。

Ruby
  • 要素数が数個かつ固定の場合は式展開( #{} )を使う
  • 要素数が多い場合や不定の場合はjoinメソッドを使う
Python
  • 要素数が数個かつ固定の場合はf文字列( f"" )を使う
  • 要素数が多い場合や不定の場合はjoinメソッドを使う
  • 配列の要素を半角スペース区切りで出力する場合はアンパック(*配列)を使う

セクション3までで数値・文字列の基本的な出力を扱いました。

次からは繰り返しを使った「n 行の出力」です!



【PR】アルゴリズム学習でお世話になった本


アルゴリズム関連の技術書は大抵C/C++で書かれていますが、ある程度プログラムが出来れば、処理の流れは理解することが出来ます。






通称: 螺旋本。C++で解説されています。AOJ(Aizu Online Judge)を運営している会津大学の渡辺准教授が書いた本です。データ構造や計算量の内容から丁寧に書いてありますのでアルゴリズム学習の最初の参考書としてオススメです。







通称: 蟻本。C++で解説されています。競技プログラミング中級者の定番書と言われていて、競技プログラミングで利用できる色々なアルゴリズムを学ぶことが出来ます。かなり高度な内容も含まれているので1冊分を完全に理解するのにはかなりの時間がかかりそうですが、手元に置いて何度も読み返しています。







通称: チーター本。C#, C++, JAVAでTopcoderの問題を解説しています。初心者~中級者向けに書かれているので解説が非常に丁寧です。







Python3でアルゴリズムを解説している本です。講義スタイルの本で、図やフローチャートを使ってアルゴリズムとデータ構造についてしっかりと説明されています。代わりにコードは少なめです。Pythonコードが読めなくても十分理解できると思います。


-paiza, プログラミング
-

© 2024 じゃいごテック