繁体   English   中英

打印字符串还是变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM