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