0
length = 0
for n in range(1,101):
    print "Sequence #:", n
    while n != 1:
        print n,
        if n % 2 == 0:
           n = n / 2
           length = length + 1
        else:
            n = (n * 3) + 1
            length = length + 1
        if n == 1:
            print n
            length = length + 1
    print "The sequence above contains", length, "numbers"
    length = 0

私の問題:

上記のPythonコードは、1から100までの雹のシーケンスを計算し、その後のシーケンスの長さを表示します。すべての計算が完了した後、シーケンスが最も長い番号とそれに対応する長さを表示するにはどうすればよいですか?

4

2 に答える 2

0

各入力の結果を保存して、最後に最も長いものを探してください。

results = []
length = 0
for n in range(1,101):
    print "Sequence #:", n
    while n != 1:
        print n,
        if n % 2 == 0:
            n = n / 2
            length = length + 1
        else:
            n = (n * 3) + 1
            length = length + 1
        if n == 1:
            print n
            length = length + 1
    results.append((n,length))
    print "The sequence above contains", length, "numbers"
    length = 0
print 'Longest sequence of lenght {1} found for number {0}'.format(*max(results, key=lambda x: x[1]))
于 2012-08-03T20:30:53.393 に答える
0

これにより、最大長とシーケンスが追跡され、最後に表示されます。aでマークされた行は##、元のコードへの追加です。

length = 0
max_length = 0 ##

for n in range(1,101):
    print "Sequence #:", n
    seq = [] ##
    while n != 1:
        print n,
        seq.append(n)  ##
        if n % 2 == 0:
           n = n / 2
           length = length + 1
        else:
            n = (n * 3) + 1
            length = length + 1
        if n == 1:
            print n
            seq.append(n) ##
            length = length + 1
    print "The sequence above contains", length, "numbers"

    if length > max_length:  ##
        max_length = length  ##
        max_seq = seq[:]     ##

    length = 0

print 'max length: ', max_length ## same as len(max_seq)
print 'max seq: ', max_seq       ##
于 2012-08-03T20:31:57.073 に答える