こんにちは!サトシ(@satoshi365_blog)です!
この記事では、「AtCoderに登録して最初に解くべき10問(AtCoder Beginners Selection)」の0問目「Welcome to AtCoder」をめちゃくちゃ分かりやすく解説していきます。
AtCoder で問題を解くためには、新規登録しないといけません。
新規登録はこちらから → AtCoder に新規登録する
「1問目」ではなく、「0問目」から始めるなんてオシャレですよね。(プログラミングの世界では、数を0から数えます)
でも実は、オシャレだから「0」から始めたわけではありません。
「最初に解くべき10問」のはずが、数えてみると全部で11問あったのです。
だから仕方なく「0問目」から数え始めることにしたのです。
それでは、「Welcome to AtCoder」の解説をしていきます!
タップできる目次
「Welcome to AtCoder」で身につくスキル
この問題では、このようなスキルが身につきます。
- プログラミングの基本
- print()の使い方
- コメントアウトの使い方
- input() の使い方
- int() の使い方
- split() の使い方
- map() の使い方
- format() の使い方
先に、それぞれどのようなスキルなのかを説明します。
プログラミングの基本1【文字列と数値】
プログラミングの世界には、「文字列」と「数値」があります。
「数値」とは「 12 」のようなものです。
文字列は普通、「 ‘Hello World!’ 」のようにシングルクォーテーション( ‘ )や、ダブルクォーテーション( ” )で囲みます。
じゃあ、「 ‘1’ 」は「文字列」でしょうか?それとも「数値」でしょうか?
答えは、「文字列」です。
クォーテーションで囲んであるからです。
つまり、「文字列の1」と「数値の1」があるということです。
- 文字列の1 : ’1′
- 数値の1 : 1
「文字列の1」は足し算すると、このようにくっついてしまいます。

このように、文字列は数値じゃないから「 1 + 1 = 2 」のように計算できません。
プログラミングの基本2【代入】
プログラミングでは、変数に文字列や数値を代入します。
数学とかでよく見る 「x = 3 とする」みたいな感じです。
感覚的には、x という名前の箱に文字列や数値を収納している感じです。
x = 'Hello World' y = 10 abc = 'test' add = 10 + 3 in = abc
add という名前の箱には 10 + 3 の結果、13 が入ります。
abc という名前の箱には ‘test’ が入っています。
だから、in = abc は in = ‘test’ と同じ意味になります。
プログラミングの基本3【リスト】
プログラミングでは、リストに文字列や数値、変数を収納します。
感覚的には、y という名前のタンスに、x という名前の箱や文字列、数値を収納している感じです。
y = [1, 2, 3] #[1, 2, 3]
abc = ['one', 'two', '3'] #['one', 'two', '3']
mix = ['one', 10] #['one', 10]
add = [3, 1, 1, 2 + 1] #[3, 1, 1, 3]
print() の使い方
print() を使うと、カッコの中を出力できます。
‘Hello World!’ と出力したいときは、このようにします。
print('Hello World!')
このように変数も出力できます。
a = 'Good'
print(a) #Good と出力される
このようにすると、‘Hello World! Satoshi!’ と出力できます。
print('Hello World!' + ' Satoshi!')
コメントアウトの使い方
Pythonでは、「#」より後ろは無視されます。
これを「コメントアウト」と言います。
#ここは無視されます
#なので何を書いてもエラーは起きません^^
#print('Hello World!')
#上の print('Hello World!') も無視されます
input() の使い方
input() を使うと、ユーザーが文字列を入力できます。
#ここでは s に入力を代入します
s = input()
#ここで入力待ちになるので、'Hello World!' と打ちます
#これで、 s に 'Hello World!' という文字列が入りました
print(s)
#'Hello World!' と出力されます
int() の使い方
int() を使うと、文字列を数値に変えられます。
まずは、int() を使わずに ‘1’ + ‘1’ をしてみましょう。
moji = '1'
print(moji + moji)
# '1' と '1' がくっつきます
#だから、'11' が出力されます
次は int() を使って 1 + 1 をしてみましょう。
moji = '1'
#moji を int() で数値に変えます
suti = int(moji)
print(suti + suti)
# 2 と出力されます
文字列と数値の違いが分かると思います。
int() を使って、1(文字列)→1(数値)にする!!
split() の使い方
split() を使うと、文字列を分けることができます。
文字列 ‘Hello,World,Satoshi’ を ‘,’ で3つに分けてみます。
s = 'Hello,World,Satoshi!'
#split() を使って ','で分けます
a, b, c = s.split(',')
print(a)
#'Hello' と出力されます
print(b)
#'World' と出力されます
print(c)
#'Satoshi!' と出力されます
map() の使い方
map() を使うと、リスト全体にいろいろな処理をできます。
例えばこのように、全部文字列だったリストの中身を全部数値に変えられます。
a, b = map(int, ['1', '4'])
print(a)
#数値の 1 が出力される
print(b)
#数値の 4 が出力される
リストの中の ‘1’ と ‘4’ どちらにも、int() を使えるのです!
format() の使い方
format() を使うと、文字列の中に変数を入れることができます。
このように使います。
a = 10
b = 20
print('{}'.format(a)) #10 と出力する
print('{}{}'.format(a, b)) #1020 と出力する
このように、文字列の中にある {} が変数に置きかわります。
「Welcome to AtCoder」の解説
0問目「Welcome to AtCoder」はチュートリアルです。
- 問題文
- 入力例と出力例
- 解答例
- 詳しい解説
この順番で書いていきます。
それでは見ていきましょう。
問題文
問題はこれです。
問題文
高橋君はデータの加工が行いたいです。
整数 a, b, c と、文字列 s が与えられます。a + b + c の計算結果と、文字列 s を並べて表示しなさい。制約
・1 ≤ a, b, c ≤ 1000
・1 ≤ |s| ≤ 100入力
入力は以下の形式で与えられる。a
b c
s出力
a + b + c と s を空白区切りで1行目に出力せよ。
また、出力の末尾には改行を入れること。
入力例と出力例
入力例
1
2 3
satoshi
出力例
6 satoshi
解答例
この問題はチュートリアルだから、模範解答があります。
今回はそれを解説します。
# -*- coding: utf-8 -*-
# 整数の入力
a = int(input())
# スペース区切りの整数の入力
b, c = map(int, input().split())
# 文字列の入力
s = input()
# 出力
print("{} {}".format(a+b+c, s))
詳しい解説
コードを詳しく解説していきます。
まずは、a を受け取ります。
そのために、 input() を int() で囲んで、入力された文字列を数値にします。
a = int(input())
次に b と c を受け取ります。
2回目の input() では、’2 3′ みたいに2つの数字がくっついてきます。
それを、split() で ‘2’ と ‘3’ に分けます。
そのあとに、map関数を使って、2つの数字を数値にします。
b, c = map(int, input().split())
そして s を受け取ります。
s = input()
最後に a + b + c と s を空白区切りで出力します。
print("{} {}".format(a+b+c, s))
# -*- coding: utf-8 -*-
# 整数の入力
a = int(input())
# スペース区切りの整数の入力
b, c = map(int, input().split())
# 文字列の入力
s = input()
# 出力
print("{} {}".format(a+b+c, s))
これで、a + b + c と s を空白区切りで1行目に出力できました。
問題文には、「また、出力の末尾には改行を入れること。」と書いてあるけど、Pythonではprint関数の後に自動で改行が入ります。
まとめ
もし分からない点などありましたら、気軽にTwitterなどでご質問ください^^
少しでも参考になれば嬉しいです!