LoginSignup
5
15

More than 3 years have passed since last update.

PaizaスキルチェックD,Cランクでよく使うもの一覧~Python~

Posted at

はじめに

この記事ではPaizaのスキルチェックで僕がよく使ったものを一覧にしてまとめています。

主にD,Cランクの問題を解くことを想定していますので、参考になれば幸いです。

ちなみに僕はBランクなので、同じレベルかそれ以上の方には参考にならないと思います。

そもそもPaizaを初めて使う人はこの記事を参考にしてください。
Python Paiza-スキルチェックと 標準入力(input)のいろいろ

①input()を使った標準入力

Paizaの問題を解く時に一番最初にすることは、入力例から必要となる値を取ってくることです。
そのためにinputを使います。

input()の特徴

inputは入力れいにある値を文字列型(str)として取ってきます。
そのため数字にしたい時にはint(input())で数字に直しましょう。

また、input()は1行丸ごと取ってきます。

#a b cと入力。
paiza = input()
print(paiza)
#abc
print(type(paiza))   #変数paizaの型を確認
#<class 'str'>   (文字列型)

input()の一般的な使い方

#入力例'Hello'
paiza = input()  #paiza変数に値を保管   #ここだけコピーすれば良いです!
print(paiza)   #Hello

()を忘れないように気をつけましょう。

1行に複数の値がある時

先ほどは一つの値を取ってきましたが、複数の値を取ってくるときはどのようにすれば良いでしょうか?

#a b cと入力。
paiza = input().split()   #ここだけコピーすれば良いです!

print(paiza)
#['a', 'b', 'c']
print(type(paiza))
#<class 'list'>

このようにリストとして取って来れます。
あとはfor文などを使えばうまく使えそうですね。

1行に複数の値がある時に1つ1つの値を取り出す

先ほどは1行に複数の値がある時の取り出し方を紹介しましたが、リストではなく1つ1つ取ってく流場合にはどのようにしたら良いのでしょうか?

#a bと入力
paiza, skill = input().split()   #ここだけコピーすれば良いです!
print(paiza)
#a
print(skill)
#b
print(type(paiza))
#<class 'str'>
print(type(skill))
#<class 'str'>

このようにすれば値を1つ1つ変数に代入して取って来れます。
ただし、1行の値の個数に対して変数の数が足りていないとエラーが起きるので気をつけましょう。

#a b cと入力
paiza, skill = input().split()   #値a, b, cの3つに対して、変数がpaiza, skillの二つしかないので足りない
#ValueError: too many values to unpack (expected 2)

足りないよ!と怒られてしまいました。

数字にする

先ほども述べたようにinputは文字列として値を取ってきます。
では数字にするには?

#1を入力
paiza = input()
print(paiza)
#1
print(type(paiza))
#<class 'str'>
paiza_number = int(paiza)   #ここだけコピーすれば良いです!
#int()を使って数字にする
print(type(paiza_number))
#<class 'int'>

リスト内包表記

では複数の値を数字にする方法を見ていきましょう。
リスト内包表記をいうものを使います。

#1と2を入力
number1, number2= [int(x) for x in input().split()]   #ここだけコピーすれば良いです!

print(number1)
#1
print(number2)
#2
print(type(number1))
#<class 'int'>
print(type(number2))
#<class 'int'>

ちょっと難しいと思うので説明します。
input().split()には1と2がリストとして入っています。
そのリストの要素をfor文で1つずつ取り出して、xに代入します。
そしてそのxint(x)で数字にして、number1に代入します。
もっと詳しく知りたいかたは是非調べてみてください・

map関数

この方法とは別にmapを使った方法もあります。
こちらの方が短いので使いやすいかもしれないです。

#1 2 3と入力
number1, number2, number3 = map(int, input().split())   #ここだけコピーすれば良いです!

print(a) 
#1
print(b) 
#2
print(c) 
#3
print(type(number1))
#<class 'int'>
print(type(number2))
#<class 'int'>
print(type(number3))
#<class 'int'>

②リスト

リストはしょっちゅう使います。
ただリストを用意するだけでなく、リストに追加したり削除したりする方法を紹介していきます。

空のリストを用意

paiza = []

これはリストを空にすることにも使えます。

要素を追加

#リスト名.append(追加したい値)
paiza.append('a')
print(paiza)
#['a']

要素を削除

remove

print(paiza)
#['a', 'b', 'c']

#リスト名.remove(要素名)
paiza.remove('a')
print(paiza)
#['b', 'c']

del

#del リスト名[インデックス番号]
print(paiza)
#['a', 'b', 'c']
del paiza[1]
print(paiza)
#['a', 'c']

並び替え

この場合下のリストが並び替えられるので注意してください。

小さい方から

paiza = [2,5,3,1,4]
paiza.sort()
print(paiza)
#[1, 2, 3, 4, 5]

大きい方から

paiza = [2,5,3,1,4]
paiza.sort(reverse=True)
print(paiza)
#[5, 4, 3, 2, 1]

reverseは逆順にする指定です。

リストを出力

#'ここに区切りたいものを入れる'.join(リスト名)
paiza = ['a', 'b', 'c', 'd', 'e']
print('?'.join(paiza))   #?で区切る
#a?b?c?d?e

③ループ

Paizaのスキルチェックで頻繁にループが使われます。
基本的なforループの使われ方は是非調べてみてください。

何行もの入力を取り出す時

何行もの入力を取り出す時inputを何回も書くのはめんどくさいです。
そんな時for文で取り出すようにしましょう。

for  i  in range(繰り返したい回数):   #使用例:range(5)
    paiza = input()

このように書くことでinputをrangeに入力した数字の回数だけ繰り返すことができます。

入力されたものを取り出しリストに格納

#a b c d e
paiza = []
for i in range(5):
    a = input()
    paiza.append(a)
print(paiza)
#['a', 'b', 'c', 'd', 'e']

input()で1行の入力を取り出し、それをリストに追加するのを5回繰り返します。

④小数点の調整

小数点切り捨て

単純な割り算

a = 10
b = 3
paiza = 10//3
print(paiza)
#3

math.floor

import math
a = 10.123
print(math.floor(a))
#10

小数点切り上げ

import math
a = 10.123
print(math.ceil(a))
#10

⑤偶数と奇数

if文を使った偶数と奇数の判定は何回か出てきます。

number = 2
if number%2==0:
    print('ok')
else:
    print('no')
#ok

あまりを出す計算をして、あまりが0ならばokを出力し、それ以外ならnoを出力するというもの。

最後に

自分が今思いつくものでよく使ったものを一通り上げました。
随時更新していく予定です。

5
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
15