🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

5回答

6168閲覧

inputで得た入力内容をstrとintに分岐させたい

Gorilland

総合スコア8

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/09/23 08:44

前提・実現したいこと

inputで得た入力内容をstrとintに分岐させたい

数値を入力させるプログラムを作っています。
なので入力内容をint()で囲って数値に変換させました。
しかし当然ですが文字を入力されるとエラーが発生してしまうので、文字列入力された時と数字列の時で分岐させたいと考えています。

発生している問題・エラーメッセージ

command_int = int(command) ValueError: invalid literal for int() with base 10: 'あ'

該当のソースコード

python

試したこと

if文で分岐させれるかと思い試しましたが、どう試行錯誤しても文字列と数字列には分岐できませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

標準で用意されているstr.isnumeric()を使うと入力された文字が全て数字かどうかを判定できます。
ただし、'123'のように全角文字の数字が混在しているケースは注意が必要です。

python

1for s in ['1', '2', 'abc', '10a', 'a20', '123', '1.23', 'あいう', '0', '0123']: 2 if s.isnumeric(): 3 print(f'整数は2倍: {int(s) * 2}') 4 else: 5 print(f'そのまま: {s}') 6""" 7整数は2倍: 2 8整数は2倍: 4 9そのまま: abc 10そのまま: 10a 11そのまま: a20 12整数は2倍: 246 13そのまま: 1.23 14そのまま: あいう 15整数は2倍: 0 16整数は2倍: 246 17"""

投稿2019/09/23 09:40

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gorilland

2019/09/24 01:33

綺麗に解決することができました。ありがとうございました。
guest

0

参考情報

  • 文字列が数字であることを判別する(isdigit, isdecimal, isnumeric)

https://hibiki-press.tech/learn_prog/python/isdigit/899

  • Converting String to Int using try/except in Python

https://stackoverflow.com/questions/8075877

投稿2019/09/23 22:04

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下のようにint変換を例外で捕捉すればよいです。

Python

1while True: 2 s = input() 3 try: 4 v = int(s) 5 except ValueError: 6 v = s 7 8 print(type(v), v)

投稿2019/09/23 08:48

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python初心者なものですがこの程度しか思い浮かばない

python

1try: 2 command_int = int(command) 3except: 4 print('数値を入れてください')

投稿2019/09/23 08:51

mushroominger

総合スコア133

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2019/09/23 12:09

except節を使う際は、捕捉する例外の型を適切に狭くするべきです。
mushroominger

2019/09/23 12:12

バリバリこの手で使ってました 精進します ご指摘ありがとうございます
guest

0

間違えました。。。

~~
temp_inputed = input()
if type(temp_inputed) == str:
print('Please, input number.')
elif type(temp_inputed) == int:
command_int = int(temp_inputed)
~~

inputの戻り値は常にstr型になるので、ifでの分岐は難しいですね
(できなくはないと思いますが)

高評価して下さった方がいるようですが、取り消しておいてください。。。間違いです。。。

投稿2019/09/23 08:59

編集2019/09/23 09:03
siruku6

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問