[英]Print either a string or a variable?
这是我的代码:
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”。 我最终得到的是:
['hi', 'me too thanks']
['hi', 'too thanks me']
['hi', 'thanks me too']
['hi', 'too thanks me']
['hi', 'me too thanks']
等等。 它可以正常工作,但是当我只希望打印一个或另一个时,它会将整个括号打印出来。 我已经使用了其他通常可以正常工作的程序,但这并不是出于某种原因。 抱歉,如果这不是一个好问题,我是python的新手。
您的代码完全按照所告诉的方式进行:打印结果,这是一个列表。 要显示列表中的一个,请使用random.choice
:
for i in range(20):
reply = ['hi',scramble('me too thanks')]
print(random.choice(reply))
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 ()
尝试这个:
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.