如何在打印消息之间放一个random.shuffle(字符串)?

时间:2015-03-28 06:33:30

标签: python

所以目前我的代码是

print("   1     2     3     4     5     6     7     8")
print(game_string + "|     |     |     |     |     |     |     |     |")
print("|     |     |     |     |     |     |     |     |")

当我运行它时,它变成

1     2     3     4     5     6     7     8
% % %|     |     |     |     |     |     |     |     |
|     |     |     |     |     |     |     |     |

(当然分为3行) 我想让它成为| %| | %| | |等等,每次运行代码时%都在随机位置。

我用来制作混洗列表的代码:

import random

l = list(" % % % ")

random.shuffle(l)

s = ''.join(l)

2 个答案:

答案 0 :(得分:2)

我会稍微改变一下这个问题, 将演示文稿与数据分开

<强>实施

def foo(n):
    import random
    game_string = list('%%%' + ' '*(n-3))

    yield ' '.join(map(str,range(1,n + 1)))
    while True:
        random.shuffle(game_string)
        yield '|'.join(game_string)

<强>演示

>>> for _, row in zip(range(5), foo(10)):
    print row


1 2 3 4 5 6 7 8 9 10
 | |%|%| | | |%| | 
 |%| | | | |%|%| | 
 | |%| | | |%| |%| 
 | |%| |%| | |%| | 

答案 1 :(得分:0)

您不会改变包含感兴趣的所有字符的字符串。以下是您可能采取的方法的一个示例:

#import packages
import random

#create list of all characters that are to be mixed up
l = list("%%%|||||||||")
#do shuffle
random.shuffle(l)
#output shuffled list to console
print( ''.join(l) )

每次洗牌时都会打印差异序列。

您可以将其存储在变量中,而不是将混洗后的字符串打印到屏幕上,例如

game_string = ''.join(l)

请注意

print(game_string + "|     |     |     |     |     |     |     |     |")

将简单地打印两个连接的字符串,即变量game_string的内容和给定的字符串。这里没有洗牌。您可能希望使用python 查找字符串连接以了解有关此内容的更多信息,例如:在http://www.pythonforbeginners.com/concatenation/string-concatenation-and-formatting-in-python