这是我的代码:
from random import shuffle
def scramble(sentence):
split = sentence.split()
shuffle(split)
return ' '.join(split)
for i in range(20):
reply = ['hi',scramble('me too thanks')]
print(reply)
我试图打印一个混乱的句子版本"我也非常感谢"或只是简单地"嗨"。我最终得到的是:
['hi', 'me too thanks']
['hi', 'too thanks me']
['hi', 'thanks me too']
['hi', 'too thanks me']
['hi', 'me too thanks']
等等。它按预期工作,但当我只想打印其中一个时,它会将括号打印成一个整体。我曾与其他通常有效的程序合作过,但这不是出于某种原因。对不起,如果这不是一个好问题,我对python来说比较新。
答案 0 :(得分:3)
你的代码完全按照它所说的去做:打印结果,这是一个列表。要显示列表中的一个或另一个,请使用random.choice
:
for i in range(20):
reply = ['hi',scramble('me too thanks')]
print(random.choice(reply))
答案 1 :(得分:1)
Ajax1234解决方案有效但在50%的时间内丢弃了scramble
的结果。它还会创建一个不必要的列表供选择。这会浪费CPU能力。
只是做:
for _ in range(20):
print('hi' if random.randint(0,1) else scramble('me too thanks'))
它是打印一个或另一个字符串的三元表达式。很酷的是,如果random.randint(0,1)
返回1
,则scramble
根本不执行
如果你有更多的案例,你可以随机选择一个函数,所以你只能使用lambda
来执行你需要的那个:
for _ in range(20):
reply = [lambda : 'hi',lambda:scramble('me too thanks'),lambda:'hello']
print(random.choice(reply)()) # note the calling of the chosen function with ()
答案 2 :(得分:0)
试试这个:
from numpy as np
def scramble(sentence):
split = sentence.split()
np.random.shuffle(split)
return ' '.join(split)
for i in range(20):
reply = ['hi',scramble('me too thanks')]
print(np.random.choice(reply))