文字列内の文字が英数字であるかどうかを確認したい。そのために次のコードを作成しましたが、うまく機能しています。
s = input()
temp = any(i.isalnum() for i in s)
print(temp)
私が持っている質問は以下のコードです、上記のコードとどう違うのですか:
for i in s:
if any(i.isalnum()):
print(True)
Forループの反復はまだ最初のコードで行われているのに、なぜエラーをスローしないのですか? 2番目のコードは以下をスローします。
トレースバック(最後の最後の呼び出し):TypeErrorのファイル ""、18行目: 'bool'オブジェクトは反復不可
2番目の関数では、any
をリスト全体ではなく単一の要素に適用します。したがって、文字i
が英数字の場合、単一のブール要素を取得します。
2番目のケースでは、単一要素を操作するときにany
を実際に使用することはできません。代わりに次のように書くことができます:
for i in s:
if i.isalnum():
print(True)
break
これは、最初のケースにより似ています。
any()
は反復可能を期待しています。これで十分です:
isalnum = False
for i in s:
if i.isalnum():
isalnum = True
break
print(isalnum)