-1

1〜5の10​​個の乱数のリストを生成し、各番号が表示される回数をカウントして、重複を削除した新しいリストを作成するプログラムがあります。特定のグローバル名が定義されていないことに気づき続けています。return関数について混乱しているようです。ただし、この形式で必要なので、各関数の最後にprintステートメントを配置することはできません。何か助けはありますか?

def main():
    """print output of program"""
    firstList= []
    randomTen(firstList)
    countInts(firstList)
    removeDuplicates(firstList)
    print(firstList)
    print('The number of times one appears is', ones)
    print('The number of times two appears is', twos)
    print('The number of times three appears is', threes)
    print('The number of times four appears is', fours)
    print('The number of times five appears is', fives)
    print(secondList)


def randomTen(firstList):
    """return list of ten integers"""
    for num in range(1,11):
        x= int(random.randint(1,5))
        firstList.append(x)
    return firstList


def countInts(firstList):
    """count the number of times each integer appears in the list"""
    ones= firstList.count(1)
    twos= firstList.count(2)
    threes= firstList.count(3)
    fours= firstList.count(4)
    fives= firstList.count(5)
    return ones, twos, threes, fours, fives

def removeDuplicates(firstList):
    """return list of random integers with the duplicates removed"""
    secondList=set(firstList)
    return secondList
4

2 に答える 2

3

問題は、関数の戻り値を無視していることです。例えば、

countInts(firstList)

読む必要があります

ones, twos, threes, fours, fives = countInts(firstList)

これがなければ、ones etalはに存在しませんmain()

同じことが他の関数にも当てはまります(ただしrandomTen()、を返すだけでfirstListなく、その場で変更することもできます)。

于 2013-03-11T16:42:54.000 に答える
1

NPEの答えは、関数の戻り値をローカル変数に割り当てる必要があるという正確な答えです。

そうは言っても、同じタスクを実行するためのもう少しPython的な方法があります。

from collections import Counter
from random import randint

nums = [randint(1, 5) for _ in range(10)]
counts = Counter(nums)
uniq_nums = set(nums) # or list(counts.keys())

値を表示するには、

print nums
for word, num in (('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)):
    print 'The number of times %s appears is %s' % (word, counts[num])
print uniq_nums

どの印刷物:

[4, 5, 1, 4, 1, 2, 2, 3, 2, 1]
The number of times one appears is 3
The number of times two appears is 3
The number of times three appears is 1
The number of times four appears is 2
The number of times five appears is 1
set([1, 2, 3, 4, 5])
于 2013-03-11T16:54:38.437 に答える