Python – 文字列に数字が含まれているかどうかをチェックするエラーチェッカーを作成しようとしていますが、うまくいきません

okwaves2024-01-25  8

def ercheck (var):
    nums = [1,2,3,4,5,6,7,8,9,0]
    error = False
    for num in nums:
        if str(num) not in (var):
            error = True
    for char in str(var):
        if char not in (var):
            error = True
    if error == True:
        print("Invalid argument(s), Try again.")
        quit()

コード化したエラー メッセージが常に表示されます。いくつかのテストの後、for num in nums: if str(num) not in (var): error = True が問題のようです。

var の例は何ですか?

– dawg

2020 年 9 月 5 日 0:57

ところで: for c in & を使用すると、リストの数値と str 変換を削除できます。#39;0123456789': ...

– dawg

2020 年 9 月 5 日 1:00

@dawg ユーザーが入力した文字列には数字のみが含まれるはずですが、非数字文字が含まれている場合はエラーが発生するはずです。例: (正解) 500. (誤) 11!1.

– アンマル アルダバーグ

2020 年 9 月 5 日 1:01

@AmmarAldabbagh ああ、var 文字列が数値であるかどうかを確認したいのですね。数値以外の値が含まれていませんか?

– アンドレアス

2020 年 9 月 5 日 1:04



------------------------

入力文字列が数値かどうかを確認したい場合は、.isnumeric() を使用できます。

def ercheck (var):
    if not str(var).isnumeric():
        print("Invalid argument(s), Try again.")

ercheck("500")
# 
ercheck("11!1")
# Invalid argument(s), Try again.

次の 2 つを使用できます。 string.isnumeric() は、文字列または文字が数値かどうかをチェックします。 any() は、反復可能な値のいずれかが true かどうかをチェックします。

def ercheck (var):
    if any((x.isnumeric() for x in var)): print("Invalid argument(s), Try again.")
    
ercheck("abcde")
#
ercheck("ab4cde")
#Invalid argument(s), Try again.

2

問題は私です'まだ Python を学習中ですが、学習プログラムでは、プログラム自体から学んだことを確認できると想定しています...

– アンマル アルダバーグ

2020 年 9 月 5 日 1:06

@AmmarAldabbagh、これらはすべてネイティブの Python 関数であるため、インポートは必要ありません。でも、理解できました。もっと簡単な方法が必要ですか?すぐに答えを調整し、2 番目の解決策を提供します

– アンドレアス

2020 年 9 月 5 日 1:08



------------------------

数字のみの文字列を探している場合は、次のようにすることができます。

def err(var):
   try:
      int(var)
   except ValueError:
      print("Invalid argument {}, Try again.".format(var))

次のこともできます:

def err(var):
   return bool(set(var)-set('0123456789')

2

問題は、私がまだ Python を学習しているところですが、学習プログラムでは、プログラム自体から学んだ内容で検証できると想定されています...

– アンマル アルダバーグ

2020 年 9 月 5 日 1:07

セットの減算は良いアイデアです。

– アンドレアス

2020 年 9 月 5 日 1:13

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。