AtCoderで茶色を目指す 4日目

7:10に起床。昨夜は早めに寝れたのに早起きできない。目標は5:00起きです。

とはいえ、朝は過ごしやすいので、机に向かいましょう。

本日もがんばります。

 

今日からpyhotnを学ぶ

本日からは次のサイトを参考に勉強していきます。

qiita.com

 

備忘録

Atcoderに関係ないメモになります。。。
  • VScodeでの一括コメントアウトコメントアウトしたい行を指定して「Shift+option+A」です。macの書き方なのでWindowsは違うかもしれないです。
  • 改行コードの「 \n」のバックスラッシュ(\)の書き方についてです。Macでは「option+¥」です。ちなみにWindowsではバックスラッシュではなく「¥n」で問題ないです。
ここからはAtCoder関係です。

初めて「RE」という結果を見ました。AtCoderの用語集よると、プログラム実行中のエラーだそうです。自分のコードを見ながら原因を解決していきます。

コードテストしていませんでした。入力の形式とコードのinputの部分が合致していませんでした。少し頭が追いつかないミスだったので次にまとめます。

 

備忘録2

やりたいこと

atcoder.jp

この問題を解きます。「箱の中のボールN個からA個とってB個追加する」という問題です。単純な計算で解けます。

エラー

コード:

x=int(input())
y=int(input())
z=int(input())
print(x-y+z)

入力:100 3 4

エラー: ValueError: invalid literal for int() with base 10: '100 3 4'

このエラーの意味は「入力した『100 3 4』は10進数の整数に変換できないよ」みたいなことらしいです。

blog.pyq.jp

原因

「いやいや、全部整数だから、元から10進数じゃん」って思いました。しかし、入力されたのは、文字列として受け取られていました。つまり、文字列入力になっていることが原因だと思われます。

解決法

入力を書き換えればすぐ済むのですが、それだと正解として扱われません。なので、コードを書き換えます。

x, y, z=map(int, input().split())

これで、解決しました。

map関数とsplit関数の使い方が不安なので、今後の課題です。

 

参考サイト

AtCoderで始めるPython入門 - Qiita

正規表現の記号コード「改行編」 - renoji.com

用語集 - AtCoder Beginner Contest 074

ValueError: invalid literal for int() with base 10: 'xxx'とは何ですか? - Python学習チャンネル by PyQ