Skip to main content
 首页 » 编程设计

python之在一行中打印随机数量的字符随机次数

2025年05月04日16qq78292959

假设我们只有一根线可以使用。我们有字符串“fo0”,我们想随机打印每个字符的次数,然后再随机重做整个语句;结果如下:

ffooooo000 ffffffoo00 fffo00000000 

如何使用 for 循环或类似的东西来做到这一点?

据我所知:

import random; x = "fo0"; print "".join(x for i in range(0,random.randrange(0,40))) 

所有这些结果都类似于“fo0fo0fo0fo0fo0fo0”。

请您参考如下方法:

您可以使用类似下面的内容。下面,s是输入的字符串,char_rand_max是一个单词中单个字符的最大重复次数,str_rand_max是最大值产生一个词的次数。每个字符至少出现一次,并且至少有一个词。

import random 
 
def rand_print(s, char_rand_max, str_rand_max): 
    for i in range(random.randint(1, str_rand_max)): 
        print ''.join([c*random.randint(1, char_rand_max) for c in s]), 
    print 

例子:

>>> s = 'fo0' 
>>> rand_print(s, 5, 5) 
fffoooo0000 
 
>>> rand_print(s, 5, 5) 
fo000 fffffooo00000 ffooo00000 fffooo00 fffo0 
 
>>> rand_print(s, 5, 5) 
ffffo00 fffffooo00000 fffffo00000 

在线解决方案

当然,如果需要,您可以在一行中完成所有这些操作。您可以执行以下操作,而不是将上面的函数压缩到一行中:

from random import randint as ri; x = 'fo0'; \ 
    print ' '.join([''.join([c*ri(1, 5) for c in x]) for i in range(ri(1, 5))]) 

请注意,我添加了换行符以使其在答案中更具可读性。此外,与上述解决方案不同的是,字符重复和单词的最大数量被硬编码为 5。