1

現在、for ループを使用しています。一連のコマンドを繰り返し処理し、最後に何かを出力したいと考えています。この for ループ内には、if-else ステートメントがあります。

break を使用して if- ステートメントを分割すると、else 部分に直接進みます。

for x in list:
   if x is 1:
      do a bunch of commands
      break
   else:
      do a bunch of other commands
print 'Success'

条件付きであるため、印刷ステートメントをIfループにとどめる必要がありますが、forループの外にあるため、何度も繰り返されません。何か案は?

xが1に等しくない場合にのみ「成功」を出力したいのですが、最後に1回だけです。

4

3 に答える 3

2

フラグを使用できます。これは、イベントが発生したこと (この場合はelse分岐に到達したこと) を示すために設定する変数です。

success = False
for x in list:
   if x is 1:
      do a bunch of commands
      break
   else:
      do a bunch of other commands
      success = True

if success:
    print 'Success'

ここで起こっていることは、elseケースがループ内で複数回到達し、成功変数がTrue(潜在的に) 複数回設定される可能性があるということです。最後のifステートメントは、フラグが最後にあるかどうかをチェックするTrueため'Success'、最大 1 回出力されます。

于 2013-04-05T21:57:41.933 に答える
2

この場合、フラグは必要ありません。python でカバーしました。for else

for x in list:
  if x is 1:
      # do a bunch of commands
      break
  else:
      # do a bunch of other commands
else:
    # only if we didn't break from the loop (no 1 in the list)
    print 'Success'  
于 2013-04-05T22:36:29.173 に答える
0

フラグを設定する必要があります

フラグ = 0

def findlength(s): パスワード内の p の長さ = len(s): if(length >= 6): flagA = 1 else: flagA = 0

return flagA

def findupper(u): パスワードの p の場合: if(p.isupper() == 1): flagB = 0

    else:
        flagB = 1

return flagB

def findlower(l): パスワードの p の場合: if(p.islower()): flagC = 0

    else:
        flagC = 1

return flagC

def findnumber(d): for p in password: if(p.isdigit()): flagD = 1

    else:
        flagD = 0
return flagD
于 2016-12-03T04:58:18.137 に答える