見出し画像

AtCoder:Welcom to AtCoder byPython

今回はAtCoderのBeginers Selectionの中の一番最初の
Welcom to AtCoder の解説をまとめて行こうと思います。
因みにPython(3.8.2)を使っています。
問題に関しては
https://atcoder.jp/contests/abs/tasks/practice_1
こちらから確認してみて下さい

a = int(input())
print("\n")
x = input().split()
b = int(x[0])
c = int(x[1])
s = input()
sum = a + b + c
print(str(sum) + " " + s)

これが全体のコードです。多分一番短く単純なコードになったと思います。

では詳しく見て行きましょう!!

まず、数字を3つユーザーから受け取らなければならないので "input"関数を使い一つを"a"と置きました。これが一行目です。
2行目は問題の入力例で改行がされていたので、"print"関数で改行のみ表示させます。
3行目~5行目までが少し複雑になっているんですけど、
Pythonでは一度に複数の入力をすることは出来ないので、一度xに入力をするんですが、その時に".split()"を使って入力された物を分ける事が出来ます。
(因みに、.split(,)と書くと","を使って分ける事が出来ます。今回は何も入れていないので空白で分けられます。)
その後、"b","c"にそれぞれインデックス値を使って代入をして行きます!!

今回ので難しいのはここだけだと思います!
そのあとは、"s"に文字を入力してもらえるように"input"を使い、"sum"に"a","b","c"の和を代入し、"print"で出力します。
ここで少し注意が必要なのですが、"+"の記号を使って出力する物を連結する場合は、お互いが同じタイプでないといけません(今回はsumの"int"とsの"str"が混在しています)そのため、"print"の中でsumを"str"に変換しています。

今回の問題はこんな感じで出来ました!!
個人的には3行目からの分ける所で少し考えてしまいました!もう少し勉強していかないとですね!!
直接"b","c"に代入する方法もあるようですが今回は上記の方法を取りました。

コラム

ここからは、コラムになるので気になる方は読んでみて下さい!

今回の問題の難所?(そこまでの物ではないかと思いますが)はやはり3行目の分けるという所だと思います!
この部分をC言語で書くと

int b;
int c;
scanf("%d %d",&b,&c);

これで"b","c"に数字を入力することが出来ます!こっちの方が文字数的には少ないですし直感的に使えるかなと思ったんですけど、やっぱり最初に変数を定義しないといけないという煩わしさはあるんですよね。どちらが良いという話ではないんですけど、こういう所が静的型付け言語と動的型付け言語の違いですかね?
どちらの方が良いかなどコメントで教えてください!!
今回はここまでです!最後まで読んでいただいてありがとうございます!


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