MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Pythonの基礎 - キーボードのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Pythonの基礎 - キーボード
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == input関数は、キーボードで情報を入力させて、その情報を集めて利用する関数である。<br> 入力された値は常に文字列型として返される。<br> <br><br> == input関数で入力 == input関数では、なんらかの値を入力した時は文字列型で出力される。<br> これは、数値を入力しても文字列型が返るということである。<br> <syntaxhighlight lang="python"> print(input()) </syntaxhighlight> <br> # 実行例 : Hello World Hello World <br> また、input関数に引数を与えて入力を促すメッセージを入れることができる。<br> <syntaxhighlight lang="python"> input("何か入力してください。: ") </syntaxhighlight> <br> # 実行例 : 何か入力してください。: テスト 'テスト' <br><br> == input関数と条件分岐 == 以下の例では、input関数と条件分岐を組み合わせている。<br> 入力した値は文字列型になるので、int関数でキャストして整数に変更して、その値を2019と比較している。<br> <br> <syntaxhighlight lang="python"> year = input("令和元年は西暦何年?:") int_year = int(year) if int_year == 2019: print("正解") else: print("間違い") </syntaxhighlight> <br> # 実行例 1 : 令和元年は西暦何年?:2019 正解 # 実行例 2 : 令和元年は西暦何年?:2020 間違い <br><br> == input関数と反復処理 == 以下の例では、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"> choices = ['python', 'java', 'c++', 'javascript'] while True: language = input("好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): ").lower() if language in choices: print(f"選択: {language}") break print("エラー: 選択肢から選んでください") </syntaxhighlight> <br> # 実行例 : 好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): Ruby エラー: 選択肢から選んでください 好きなプログラミング言語を入力してください (Python/Java/C++/JavaScript): Python 選択: python <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__ [[カテゴリ:Python]]
Pythonの基礎 - キーボード
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse