Python3でpaizaの標準入力に解答してみた

1つのデータの入力

標準入力で1つの文字列が与えられるので、それを入力して、そのまま1行で出力してください。
https://paiza.jp/works/mondai/stdin/stdin_1

input_line = input()
print(input_line)

Pythonの場合、input() で入力を受け取りますので、それを変数<input_line>に代入しています。
print関数で変数<input_line>をそのまま出力する形になります。

1行のデータの入力

標準入力で1行の文字列が与えられるので、それを入力して、そのまま1行で出力してください。
https://paiza.jp/works/mondai/stdin/stdin_1_line

input_line = input()
print(input_line)

1つのデータの時と同様に、input() で入力を受け取りますので、それを変数<input_line>に代入しています。
print関数で変数<input_line>をそのまま出力する形になります。

3行のデータの入力

標準入力で3行それぞれで文字列が与えられるので、それらを入力して、そのまま3行で出力してください。
https://paiza.jp/works/mondai/stdin/stdin_3_line

import sys

for line in sys.stdin.readlines():
    print(line,end='')

ライブラリをインポート<import sys>しています。
for文を使って、1行入力されるごとにprint関数を実行するようにしています。
print関数では、入力を受け取った変数<line>を表示するとともに、改行<end=”>をしています。

paizaの解答ではもっとシンプルでした

for i in range(3):
    s = input()
    print(s)

入力される行数が3行と決まっているので、最初からfor文の繰り返し回数は3<range(3)>と決まっています。
あとは、入力<input()>ごとに変数sで入力を受け取り、print関数で変数sを表示させます。

N行のデータの入力

標準入力でN行それぞれで文字列が与えられるので、それらを入力して、順にそのままN行で出力してください。
https://paiza.jp/works/mondai/stdin/stdin_n_line

input_line = int(input())

for i in range(input_line):
    line = input()
    print(line)

値が入力されると通常は文字列として認識されますので、ここでは数値<int(input())>として受け取っています。
最初の入力は繰り返しの回数となりますので、for文の繰り返し回数は<range(input_line)>となります。

3つのデータの入力

標準入力で3つの文字列が1行で与えられるので、それらを入力して、順にそのまま3行で出力してください。

input_line = input().split(" ")
lines = input_line

for line in range(len(lines)):
    line = lines[line]
    print(line)

文字列が1行で与えられる時の区切り文字がスペースであることに着目し、入力をスペースで区切って<input().split(” “)>変数<input_line>に代入します。
さらに変数<input_line>を変数<lines>に代入します。(paizaの解答を見たら、この工程は必要なかったかもしれないと思いました)
変数<lines>は自動的に配列として認識されますので、len関数で配列の長さを抽出し、それをfor文の繰り返し回数としています。<range(len(lines))
カウンタ変数のlineを使って、配列linesの要素を順番に取り出します。<line = lines[line]

paizaの解答ではもっとシンプルでした

a = input().split()

for i in a:
    print(i)

入力をスペースで区切るところは同じですが、どうやら区切り文字を省略すると半角スペースとなるようです。<input().split()
変数aに入力を代入した段階で配列として認識されているようで、そのままfor文の繰り返し回数として変数aを使用しています。<for i in a>

N個のデータの入力

標準入力でN個の文字列が1行で与えられるので、それらを入力して、順にそのままN行で出力してください。
https://paiza.jp/works/mondai/stdin/stdin_n

input_line = int(input())
input_word = input()
for i in range(input_line):
    s = input_word.rstrip().split(' ')
    print(s[i])

最初の入力はN個のデータが入力されるという数値なので、変数には数値として代入します。<input_line = int(input())
その後の入力は、文字列として変数<input_word>に代入します。
for文の繰り返し回数を最初の入力としています。<range(input_line)
配列sに変数<input_word>を区切って代入し、print関数で配列sを順に出力しています。

paizaの解答ではもっとシンプルでした

n = int(input())
a = input().split()

for i in range(n):
    print(a[i])

考え方としては似ていますが、先に入力を区切ったデータを変数に代入しています。<a = input().split()
for文のカウンタ変数のiを配列aのインデックスとすることによって、print関数で出力しています。<print(a[i])

カンマ区切りの3つのデータの入力

標準入力で3つの文字列が1行で与えられるので、それらを入力して、順にそのまま3行で出力してください。
https://paiza.jp/works/mondai/stdin/stdin_comma_3

line = input()
words = line.split(",")

for word in words:
    print(word)

与えられた入力を一旦line変数で受け取ります。<line = input()
変数lineのデータをカンマで区切って、変数wordsに代入します。<words = line.split(“,”)
for文の繰り返し回数を配列wordsの長さとして<for word in words>、print関数でwordを出力します。<print(word)

paizaの解答ではもっとシンプルでした

a = input().split(",")

for i in a:
    print(i)

そもそも、最初からカンマ区切りで変数に代入しています。<a = input().split(“,”)
(私の解答にあった、<words = line.split(“,”)>という行は、上記のようにまとめて記述することができたようです)

カンマ区切りのN個のデータの入力

標準入力でN個の文字列が1行で与えられるので、それらを入力して、順にそのままN行で出力してください。
https://paiza.jp/works/mondai/stdin/stdin_comma_n

count = int(input())
input_line = input()

words = input_line.split(",")

for word in words:
    print(word)

まず、入力されたN個という数値を変数に代入しています。<count = int(input())
その後の入力は別の変数で受け取っています。<input_line = input()
そして、変数input_lineの内容をカンマ区切りして、変数wordsに代入しています。<words = input_line.split(“,”)

paizaの解答ではもっとシンプルでした

n = int(input())
a = input().split(",")

for i in range(n):
    print(a[i])

考え方は、私の解答と似ていると思いますが、余計な行が無く、見やすくなっています。
やはり、最初からカンマ区切りで配列を作ってしまうのが、手っ取り早いようです。<a = input().split(“,”)

タイトルとURLをコピーしました