1

私は Python を初めて使用し、プログラミングの経験がありません。私はこれを持っています(リストか配列かはわかりません):

from random import choice
while True:
s=['The smell of flowers',
'I remember our first house',
'Will you ever forgive me?',
'I\'ve done things I\'m not proud of',
'I turn my head towards the clouds',
'This is the end',
'The sensation of falling',
'Old friends that have said good bye',
'I\'m alone',
'Dreams unrealized',
'We used to be happy',
'Nothing is the same',
'I find someone new',
'I\'m happy',
'I lie',
]
l=choice(range(5,10))
while len(s)>l:
s.remove(choice(s))
print "\nFalling:\n"+'.\n'.join(s)+'.'
raw_input('')

ランダムに 5 ~ 10 行を選択して印刷しますが、同じ順序で印刷されます。つまり、「私は嘘をつく」が選択されている場合、常に一番下に表示されます。選択した行をシャッフルして、よりランダムな順序で表示する方法を知りたいと思っていましたか?

編集:これを実行しようとすると:

import random
s=['The smell of flowers',
'I remember our first house',
'Will you ever forgive me?',
'I\'ve done things I\'m not proud of',
'I turn my head towards the clouds',
'This is the end',
'The sensation of falling',
'Old friends that have said good bye',
'I\'m alone',
'Dreams unrealized',
'We used to be happy',
'Nothing is the same',
'I find someone new',
'I\'m happy',
'I lie',
]

picked=random.sample(s,random.randint(5,10))
print "\nFalling:\n"+'.\n'.join(picked)+'.'

実行されているようですが、何も印刷されません。アンバーの答えからこれを正しく入力しましたか? 私は本当に自分が何をしているのか分かりません。

4

4 に答える 4

3
import random

s = [ ...your lines ...]

picked = random.sample(s, random.randint(5,10))

print "\nFalling:\n"+'.\n'.join(picked)+'.'
于 2013-02-16T22:41:42.007 に答える
2

random.sample元のリストを変更しないを使用することもできます。

>>> import random
>>> a = range(100)
>>> random.sample(a, random.randint(5, 10))
    [18, 87, 41, 4, 27]
>>> random.sample(a, random.randint(5, 10))
    [76, 4, 97, 68, 26]
>>> random.sample(a, random.randint(5, 10))
    [23, 67, 30, 82, 83, 94, 97, 45]
>>> random.sample(a, random.randint(5, 10))
    [39, 48, 69, 79, 47, 82]
于 2013-02-16T22:44:30.923 に答える
1

解決策は次のとおりです。

    import random
    s=['The smell of flowers',
    'I remember our first house',
    'Will you ever forgive me?',
    'I\'ve done things I\'m not proud of',
    'I turn my head towards the clouds',
    'This is the end',
    'The sensation of falling',
    'Old friends that have said good bye',
    'I\'m alone',
    'Dreams unrealized',
    'We used to be happy',
    'Nothing is the same',
    'I find someone new',
    'I\'m happy',
    'I lie',
    ]
    random.shuffle(s)
    for i in s[:random.randint(5,10)]:
        print i
于 2013-02-16T22:45:03.460 に答える
1

random.sampleリストからランダムな数のアイテムを選択するために使用できます。

import random
r = random.sample(s, random.randint(5, 10))
于 2013-02-16T22:45:06.807 に答える