1

私は自分のネットワーク用のバージョン管理モジュールを構築していますが、これは私がこれまでに持っているものです:

import os, plistlib
def cyberduck():
    path=('/Applications/Cyberduck.app/Contents/Info.plist')
    pl = plistlib.readPlist(path)
    pl['key']=0
        for key in pl.values():
            if (key=='4.2.1'):
                print("We're good!")
            else:
                print("No good")
                import cyberduck_install

ループはバージョン文字列 ('4.2.1')​​ を見つけますが、バージョン以外のすべての文字列も見つけます。('4.2.1')​​ が存在する場合は true を返し、("We're good!") のみを出力し、('4.2.1')​​ がどこにも存在しない場合は返すようにループをコーディングするにはどうすればよいですか? false で、印刷 (「ダメ」) は 1 回だけですか?

4

2 に答える 2

5

何か不足していますか?欲しいのはこれだけですか:

if '4.2.1' in pl.values():
   print ("We're good!")
else:
   print ("No good")
于 2012-06-20T03:30:48.963 に答える
0

happydave の答えは、あらゆる種類の正当な理由から、ほぼ確実に最良の選択肢です。しかし、純粋に完全を期すために、問題のコードへのこのわずかな変更は機能します。

for key in pl.values():
    if (key=='4.2.1'):
        print("We're good!")
        break
else:
    print("No good")

これが機能するのは、Python ループ (forとの両方while)が節を許可するelse:ためです。この節は、ループの終わりから外れるとトリガーされますが、 で終了する場合はトリガーされませんbreak

于 2012-06-20T03:41:40.987 に答える