「Pythonの基礎 - キーボード」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

文字列「</source>」を「</syntaxhighlight>」に置換
編集の要約なし
1行目: 1行目:
== 概要 ==
== 概要 ==
input関数は、キーボードで情報を入力させて、その情報を集めて利用する関数である。<br>
input関数は、キーボードで情報を入力させて、その情報を集めて利用する関数である。<br>
入力された値は常に文字列型として返される。<br>
<br><br>
<br><br>


9行目: 10行目:
  print(input())
  print(input())
  </syntaxhighlight>
  </syntaxhighlight>
<br>
# 実行例 :
Hello World
Hello World
<br>
<br>
また、input関数に引数を与えて入力を促すメッセージを入れることができる。<br>
また、input関数に引数を与えて入力を促すメッセージを入れることができる。<br>
14行目: 20行目:
  input("何か入力してください。: ")
  input("何か入力してください。: ")
  </syntaxhighlight>
  </syntaxhighlight>
<br>
# 実行例 :
何か入力してください。: テスト
'テスト'
<br><br>
<br><br>


19行目: 30行目:
以下の例では、input関数と条件分岐を組み合わせている。<br>
以下の例では、input関数と条件分岐を組み合わせている。<br>
入力した値は文字列型になるので、int関数でキャストして整数に変更して、その値を2019と比較している。<br>
入力した値は文字列型になるので、int関数でキャストして整数に変更して、その値を2019と比較している。<br>
<br>
  <syntaxhighlight lang="python">
  <syntaxhighlight lang="python">
  year = input("令和元年は西暦何年?:")
  year = input("令和元年は西暦何年?:")
  int_year = int(year)
  int_year = int(year)
  if int_year == 2019:
  if int_year == 2019:
    print("正解")
    print("正解")
  else:
  else:
    print("間違い")
    print("間違い")
  </syntaxhighlight>
  </syntaxhighlight>
<br>
# 実行例 1 :
令和元年は西暦何年?:2019
正解
# 実行例 2 :
令和元年は西暦何年?:2020
間違い
<br><br>
<br><br>


== input関数と反復処理 ==
== input関数と反復処理 ==
以下の例では、wihle文で無限ループさせることで質問を繰り返し、正解した時にbreak文で反復処理を抜ける。<br>
以下の例では、while文で無限ループさせることで質問を繰り返し、正解した時にbreak文で反復処理を抜ける。<br>
<br>
<syntaxhighlight lang="python">
while True:
    year = input("令和元年は西暦何年?:")
    int_year = int(year)
    if int_year == 2019:
      print("正解")
      break
    print("間違い")
</syntaxhighlight>
<br>
# 実行例 :
令和元年は西暦何年?:2020
間違い
令和元年は西暦何年?:2018
間違い
令和元年は西暦何年?:2019
正解
<br><br>
 
== 複数の値を入力する ==
split関数を使用することで、1行で複数の値を入力することができる。<br>
<br>
split関数は、文字列を指定した区切り文字で分割してリストとして返す。<br>
引数を省略すると、空白文字 (スペース、タブ、改行など) で分割される。<br>
<br>
以下の例では、スペース区切りで複数の値を入力している。<br>
<br>
<syntaxhighlight lang="python">
values = input("3つの値をスペース区切りで入力してください: ")
val1, val2, val3 = values.split()
print(f"1つ目: {val1}")
print(f"2つ目: {val2}")
print(f"3つ目: {val3}")
</syntaxhighlight>
<br>
# 実行例 :
3つの値をスペース区切りで入力してください: apple banana orange
1つ目: apple
2つ目: banana
3つ目: orange
<br>
以下の例では、カンマ区切りで数値を入力して、整数に変換している。<br>
<br>
<syntaxhighlight lang="python">
numbers = input("3つの数値をカンマ区切りで入力してください: ")
num1, num2, num3 = map(int, numbers.split(','))
print(f"合計: {num1 + num2 + num3}")
</syntaxhighlight>
<br>
# 実行例 :
3つの数値をカンマ区切りで入力してください: 10,20,30
合計: 60
<br><br>
 
== 数値入力のエラー処理 ==
input関数で数値を入力する場合、ユーザが数値以外を入力する可能性がある。<br>
try-except文を使用することで、エラーを安全に処理できる。<br>
<br>
==== 基本的なエラー処理 ====
以下の例では、数値以外が入力された場合にエラーメッセージを表示している。<br>
<br>
<syntaxhighlight lang="python">
try:
    age = int(input("年齢を入力してください: "))
    print(f"あなたは{age}歳です")
except ValueError:
    print("エラー: 数値を入力してください")
</syntaxhighlight>
<br>
# 実行例 1 :
年齢を入力してください: 25
あなたは25歳です
# 実行例 2 :
年齢を入力してください: abc
エラー: 数値を入力してください
<br>
==== 正しい入力があるまで繰り返す ====
以下の例では、正しい数値が入力されるまで繰り返し入力を求めている。<br>
<br>
<syntaxhighlight lang="python">
while True:
    try:
      age = int(input("年齢を入力してください: "))
      if age < 0 or age > 150:
          print("エラー: 0から150の範囲で入力してください")
          continue
      print(f"あなたは{age}歳です")
      break
    except ValueError:
      print("エラー: 数値を入力してください")
</syntaxhighlight>
<br>
# 実行例 :
年齢を入力してください: abc
エラー: 数値を入力してください
年齢を入力してください: -5
エラー: 0から150の範囲で入力してください
年齢を入力してください: 25
あなたは25歳です
<br><br>
 
== パスワード入力 (getpass関数) ==
getpass関数を使用すると、入力内容を画面に表示せずに入力を受け取ることができる。<br>
パスワードやその他の機密情報を入力する際に使用する。<br>
<br>
getpass関数を使用するには、getpassモジュールをインポートする必要がある。<br>
<br>
<syntaxhighlight lang="python">
import getpass
password = getpass.getpass("パスワードを入力してください: ")
print(f"パスワードの長さ: {len(password)}文字")
</syntaxhighlight>
<br>
# 実行例 :
パスワードを入力してください:
パスワードの長さ: 8文字
<br>
<u>※注意</u><br>
<u>入力中は画面に何も表示されない。</u><br>
<u>これにより、周囲の人にパスワードが見られることを防ぐことができる。</u><br>
<br>
以下の例では、ユーザー名とパスワードを入力して認証を行っている。<br>
<br>
<syntaxhighlight lang="python">
import getpass
username = input("ユーザ名: ")
password = getpass.getpass("パスワード: ")
if username == "admin" and password == "secret":
    print("ログイン成功")
else:
    print("ログイン失敗")
</syntaxhighlight>
<br>
# 実行例 :
ユーザ名: admin
パスワード:
ログイン成功
<br><br>
 
== sys.stdinを使った入力 ==
sys.stdinを使用することで、複数行の入力や大量データの入力を効率的に処理できる。<br>
<br>
==== 複数行の入力を一度に読み込む ====
以下の例では、sys.stdinを使用して複数行の入力を一度に読み込んでいる。<br>
<br>
<syntaxhighlight lang="python">
import sys
print("複数行を入力してください (Ctrl+Dで終了):")
lines = sys.stdin.readlines()
print(f"入力された行数: {len(lines)}")
for i, line in enumerate(lines, 1):
    print(f"{i}行目: {line.strip()}")
</syntaxhighlight>
<br>
# 実行例 :
複数行を入力してください (Ctrl+Dで終了):
Python
Java
C++
入力された行数: 3
1行目: Python
2行目: Java
3行目: C++
<br>
==== 1行ずつ効率的に読み込む ====
以下の例では、sys.stdinを反復処理して1行ずつ読み込んでいる。<br>
大量のデータを処理する際に効率的である。<br>
<br>
<syntaxhighlight lang="python">
import sys
print("文字列を入力してください (空行で終了):")
for line in sys.stdin:
    line = line.strip()
    if not line:
      break
    print(f"入力: {line}")
</syntaxhighlight>
<br>
# 実行例 :
文字列を入力してください (空行で終了):
Hello
入力: Hello
World
入力: World
<br><br>
 
== 入力値の検証 ==
ユーザからの入力を受け取る際は、入力値が期待する形式かどうかを確認することが重要である。<br>
<br>
==== 文字列の長さを検証する ====
以下の例では、入力された文字列の長さをチェックしている。<br>
<br>
<syntaxhighlight lang="python">
while True:
    name = input("名前を入力してください (2文字以上): ")
    if len(name) >= 2:
      print(f"ようこそ、{name}さん")
      break
    print("エラー: 名前は2文字以上で入力してください")
</syntaxhighlight>
<br>
# 実行例 :
名前を入力してください (2文字以上): A
エラー: 名前は2文字以上で入力してください
名前を入力してください (2文字以上): Alice
ようこそ、Aliceさん
<br>
==== 正規表現で検証する ====
以下の例では、正規表現を使用してメールアドレスの形式を確認している。<br>
<br>
<syntaxhighlight lang="python">
import re
while True:
    email = input("メールアドレスを入力してください: ")
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    if re.match(pattern, email):
      print(f"メールアドレス: {email}")
      break
    print("エラー: 正しいメールアドレスの形式で入力してください")
</syntaxhighlight>
<br>
# 実行例 :
メールアドレスを入力してください: test
エラー: 正しいメールアドレスの形式で入力してください
メールアドレスを入力してください: test@example.com
メールアドレス: test@example.com
<br>
==== 選択肢から選ばせる ====
以下の例では、あらかじめ定義された選択肢の中から選ばせている。<br>
<br>
  <syntaxhighlight lang="python">
  <syntaxhighlight lang="python">
choices = ['python', 'java', 'c++', 'javascript']
  while True:
  while True:
    year = input("令和元年は西暦何年?:")
    language = input("好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): ").lower()
    int_year = int(year)
    if language in choices:
    if int_year == 2019:
      print(f"選択: {language}")
        print("正解")
      break
        break
    print("エラー: 選択肢から選んでください")
    print("間違い")
  </syntaxhighlight>
  </syntaxhighlight>
<br>
# 実行例 :
好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): Ruby
エラー: 選択肢から選んでください
好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): Python
選択: python
<br><br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Python,input,キーボード入力,標準入力,getpass,sys.stdin,入力検証,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:Python]]
[[カテゴリ:Python]]

2026年2月1日 (日) 05:48時点における版

概要

input関数は、キーボードで情報を入力させて、その情報を集めて利用する関数である。
入力された値は常に文字列型として返される。


input関数で入力

input関数では、なんらかの値を入力した時は文字列型で出力される。
これは、数値を入力しても文字列型が返るということである。

 print(input())


# 実行例 :

Hello World
Hello World


また、input関数に引数を与えて入力を促すメッセージを入れることができる。

 input("何か入力してください。: ")


# 実行例 :

何か入力してください。: テスト
'テスト'



input関数と条件分岐

以下の例では、input関数と条件分岐を組み合わせている。
入力した値は文字列型になるので、int関数でキャストして整数に変更して、その値を2019と比較している。

 year = input("令和元年は西暦何年?:")
 int_year = int(year)
 if int_year == 2019:
    print("正解")
 else:
    print("間違い")


# 実行例 1 :

令和元年は西暦何年?:2019
正解

# 実行例 2 :

令和元年は西暦何年?:2020
間違い



input関数と反復処理

以下の例では、while文で無限ループさせることで質問を繰り返し、正解した時にbreak文で反復処理を抜ける。

 while True:
    year = input("令和元年は西暦何年?:")
    int_year = int(year)
    if int_year == 2019:
       print("正解")
       break
    print("間違い")


# 実行例 :

令和元年は西暦何年?:2020
間違い
令和元年は西暦何年?:2018
間違い
令和元年は西暦何年?:2019
正解



複数の値を入力する

split関数を使用することで、1行で複数の値を入力することができる。

split関数は、文字列を指定した区切り文字で分割してリストとして返す。
引数を省略すると、空白文字 (スペース、タブ、改行など) で分割される。

以下の例では、スペース区切りで複数の値を入力している。

 values = input("3つの値をスペース区切りで入力してください: ")
 val1, val2, val3 = values.split()
 print(f"1つ目: {val1}")
 print(f"2つ目: {val2}")
 print(f"3つ目: {val3}")


# 実行例 :

3つの値をスペース区切りで入力してください: apple banana orange
1つ目: apple
2つ目: banana
3つ目: orange


以下の例では、カンマ区切りで数値を入力して、整数に変換している。

 numbers = input("3つの数値をカンマ区切りで入力してください: ")
 num1, num2, num3 = map(int, numbers.split(','))
 print(f"合計: {num1 + num2 + num3}")


# 実行例 :

3つの数値をカンマ区切りで入力してください: 10,20,30
合計: 60



数値入力のエラー処理

input関数で数値を入力する場合、ユーザが数値以外を入力する可能性がある。
try-except文を使用することで、エラーを安全に処理できる。

基本的なエラー処理

以下の例では、数値以外が入力された場合にエラーメッセージを表示している。

 try:
    age = int(input("年齢を入力してください: "))
    print(f"あなたは{age}歳です")
 except ValueError:
    print("エラー: 数値を入力してください")


# 実行例 1 :

年齢を入力してください: 25
あなたは25歳です

# 実行例 2 :

年齢を入力してください: abc
エラー: 数値を入力してください


正しい入力があるまで繰り返す

以下の例では、正しい数値が入力されるまで繰り返し入力を求めている。

 while True:
    try:
       age = int(input("年齢を入力してください: "))
       if age < 0 or age > 150:
          print("エラー: 0から150の範囲で入力してください")
          continue
       print(f"あなたは{age}歳です")
       break
    except ValueError:
       print("エラー: 数値を入力してください")


# 実行例 :
年齢を入力してください: abc
エラー: 数値を入力してください
年齢を入力してください: -5
エラー: 0から150の範囲で入力してください
年齢を入力してください: 25
あなたは25歳です



パスワード入力 (getpass関数)

getpass関数を使用すると、入力内容を画面に表示せずに入力を受け取ることができる。
パスワードやその他の機密情報を入力する際に使用する。

getpass関数を使用するには、getpassモジュールをインポートする必要がある。

 import getpass
 
 password = getpass.getpass("パスワードを入力してください: ")
 print(f"パスワードの長さ: {len(password)}文字")


# 実行例 :
パスワードを入力してください:
パスワードの長さ: 8文字


※注意
入力中は画面に何も表示されない。
これにより、周囲の人にパスワードが見られることを防ぐことができる。

以下の例では、ユーザー名とパスワードを入力して認証を行っている。

 import getpass
 
 username = input("ユーザ名: ")
 password = getpass.getpass("パスワード: ")
 
 if username == "admin" and password == "secret":
    print("ログイン成功")
 else:
    print("ログイン失敗")


# 実行例 :

ユーザ名: admin
パスワード:
ログイン成功



sys.stdinを使った入力

sys.stdinを使用することで、複数行の入力や大量データの入力を効率的に処理できる。

複数行の入力を一度に読み込む

以下の例では、sys.stdinを使用して複数行の入力を一度に読み込んでいる。

 import sys
 
 print("複数行を入力してください (Ctrl+Dで終了):")
 lines = sys.stdin.readlines()
 
 print(f"入力された行数: {len(lines)}")
 for i, line in enumerate(lines, 1):
    print(f"{i}行目: {line.strip()}")


# 実行例 :

複数行を入力してください (Ctrl+Dで終了):
Python
Java
C++
入力された行数: 3
1行目: Python
2行目: Java
3行目: C++


1行ずつ効率的に読み込む

以下の例では、sys.stdinを反復処理して1行ずつ読み込んでいる。
大量のデータを処理する際に効率的である。

 import sys
 
 print("文字列を入力してください (空行で終了):")
 for line in sys.stdin:
    line = line.strip()
    if not line:
       break
    print(f"入力: {line}")


# 実行例 :

文字列を入力してください (空行で終了):
Hello
入力: Hello
World
入力: World



入力値の検証

ユーザからの入力を受け取る際は、入力値が期待する形式かどうかを確認することが重要である。

文字列の長さを検証する

以下の例では、入力された文字列の長さをチェックしている。

 while True:
    name = input("名前を入力してください (2文字以上): ")
    if len(name) >= 2:
       print(f"ようこそ、{name}さん")
       break
    print("エラー: 名前は2文字以上で入力してください")


# 実行例 :

名前を入力してください (2文字以上): A
エラー: 名前は2文字以上で入力してください
名前を入力してください (2文字以上): Alice
ようこそ、Aliceさん


正規表現で検証する

以下の例では、正規表現を使用してメールアドレスの形式を確認している。

 import re
 
 while True:
    email = input("メールアドレスを入力してください: ")
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    if re.match(pattern, email):
       print(f"メールアドレス: {email}")
       break
    print("エラー: 正しいメールアドレスの形式で入力してください")


# 実行例 :

メールアドレスを入力してください: test
エラー: 正しいメールアドレスの形式で入力してください
メールアドレスを入力してください: test@example.com
メールアドレス: test@example.com


選択肢から選ばせる

以下の例では、あらかじめ定義された選択肢の中から選ばせている。

 choices = ['python', 'java', 'c++', 'javascript']
 
 while True:
    language = input("好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): ").lower()
    if language in choices:
       print(f"選択: {language}")
       break
    print("エラー: 選択肢から選んでください")


# 実行例 :

好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): Ruby
エラー: 選択肢から選んでください
好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): Python
選択: python