実行すると、入力待ちの状態になるようなコードをPythonで書きたい。
Pythonに関する書物は世の中に沢山あるのですが、私の探し方が悪いのか「実行すると、
入力待ちの状態になるコード」に関する説明がどの書物にもそれほど書かれていないように思えます。
例えば「ある整数nを入力すると、それを2倍した2nが出力される」という
コードをPythonで書きたいと思ったらどうすれば良いのでしょうか。
Pythonの書物だと、下のようなコードはよく基本の章などに書いてあります。
n = 5
print(2*n)
確かにこのコードを実行すると5の2倍である10という数が出てきます。
しかしこれだとnに何を入力するのかが既にコードに書いてあり、コードを
実行したあとにnを自由に決めることはできません。
ではコードを実行した後にnを入力するにはどうすれば良いのか、ということになりますが、
答えは以下のコードになります。
n = int(input())
print(2*n)
このコードを実行すると入力待ちの状態になり、例えば7と入力すると14という数が出力されます。
別の例も挙げておきます。
print("好きな正の整数を入力して下さい。")
n = int(input())
print("1から入力された整数までの各整数の和は" )
print(n * (n+1)/2)
print("です。")
このコードを実行して、例えば6と入力すると1+2+3+4+5+6=21なので21という数が出力されます。
input()の個人的まとめ
ここでは、input()に関連したコードを私が個人的にまとめて書いていきたいと思います。
実数を入力する場合
intではなくfloatとすればOKです。
例えば以下のコードを実行して0.2と入力すると2.5×0.2=0.5が出力されます。
n = float(input())
print(2.5*n)
また、文字の場合は何も付けずn=input()とします。
複数の数を入力したい場合
map(int, input().split())と書きます。入力の間隔はエンターではなくスペースです。
print("好きな整数を3つ入力して下さい。")
a, b, c= map(int, input().split())
print("入力された各整数の和は" )
print(a+b+c)
print("です。")
単に和を求めるだけなら以下の様な書き方もあります。
print("好きな整数を5つ入力して下さい。")
s = 0
for i in range(5):
s += int(input())
print("入力された各整数の和は" )
print(s)
print("です。")
メッセージのあとに整数を入力させたい場合
例2や例4、例5のように書いてもいいのですが、以下のようにまとめて書くこともできます。
n = input('好きな整数を入力して下さい。:')
n = int(n)
配列を入力したい場合
array = list(map(int, input().split()))
このあとに例えば
print(len(array))
print(sum(array))
などと書いておけば、入力した配列の要素数(つまり入力した整数の個数)や配列の要素の和が
出力されます。
配列を入力したい場合2
n = int(input())
array = [int(input()) for _ in range(n)]
この場合、最初に配列の要素数を指定できます。ただし、ひとつの成分を入力するごとに
その都度Enterを押す必要があります。
配列を入力したい場合3
上の状況と似ていますが、こちらは先に空の配列を用意しておきます。
n = int(input())
a = []
for i in range(n):
a.append(int(input()))
縦に整数を並べたい場合
まず入力する整数の数を決めて、そのあとはfor文とします。
n = int(input())
for i in range(n):
x = int(input())
n行の行列のような配列を入力したい場合
数学で行列と言えば各行の成分の数は一定でなければいけませんが、ここではそうとは限らない配列の入力法を書いておきます。
n = int(input())
a = []
for i in range(n):
a.append(list(map(int, input().split())))
クラスを使用したコード
例えば、以下の様に書くことができます。
class Doubler:
def __init__(self):
self.n = int(input("数字を入力してください: "))
def double(self):
print(2 * self.n)
# インスタンスを作成してメソッドを呼び出す
doubler = Doubler()
doubler.double()