1

else ステートメントが機能しません。何も入力されていないときにループを閉じる方法は? アプローチ方法に関する提案は?

def main():
    print "~*~*~*~*~*~ Timbuktu Archery Contest ~*~*~*~*~*~"
    archerList = [] #list
    timeList = [] #list2
    name = raw_input ("Enter contestants first name: ")
    s = str(name)
    archerList.append(name)
    while name > 0:
        time = raw_input ("Enter time (in milliseconds) for %s: " % s)
        timeList.append(time)
        name = raw_input ("Enter contestants first name: ")
        s = str(name)
        archerList.append(name)
    else:
        name == ""
        print "Slowest archer was " , min(timeList)
        print "Fastest archer was " , max(timeList)
4

4 に答える 4

2

空の名前が指定されるまでループするには:

while name:
于 2013-02-15T07:58:06.717 に答える
0

これはもっとpythonicです。DRY=繰り返してはいけません。

def main():
    print "~*~*~*~*~*~ Timbuktu Archery Contest ~*~*~*~*~*~"
    min = max = 0
    while True:
        name = raw_input ("Enter contestants first name: ")
        if not name:
            break
        start = raw_input ("Enter time (in milliseconds) for %s: " % name)
        min = start if start < min else min
        max = start if start > max else max
    print "Slowest archer was %i" % min
    print "Fastest archer was %i" % max

考慮すべきポイント:

  • archerListコードで値を取得できないため、削除しました
  • 射手が同じ時間を達成した場合はどうなりますか?
  • 実際には、"slowest archer was..."名前ではなく、最も遅い射手の時間を教えてくれます
于 2013-02-15T13:00:13.363 に答える
0

あなたはこれを必要とします:

while len(name) > 0
于 2013-02-15T08:00:16.933 に答える
0

この if-else コンストラクトを使用すると、何も入力されていない場合にループから抜け出すことができます

if (name==''):
    break
else:
    <job to be done>
于 2013-02-15T10:13:49.487 に答える