Python关于从标准输入随机化的问题


  1. 我的问题是,在我的r.py文件中,我试图读取标准输入文件,并以3x3输出格式打印输出板,该文件采用两个命令行参数(随机编号生成器种子和随机移动次数(,除了随机化外,与标准输入文件类似。标准输入文件只包含一个3x3格式的值,如
123 
456 
789

每3个数字后面有一个新行,就像矩阵一样。

  1. 我使用sys.stdin读取我的输入文件,但我如何正确使用它,以便我可以随机化输入文件的值(3x3格式,每3个数字后面有一行:123 456 789(,以达到我想要的输出文件,该文件应该是随机化的,但与输入文件一样是3x3格式。

  2. 这是我迄今为止所拥有的。我可以让它打印原始输入文件,但当我打印它时,我不能让它随机化。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys, random
dinput=sys.stdin.read()
if (len(sys.argv) != 3):
print()
print("Usage: %s [seed] [number of random moves]" %(sys.argv[0]))
print()
sys.exit(1)
def main():
random.seed(int(sys.argv[1]))
number_of_moves = int(sys.argv[2])
for x in range(number_of_moves):
move = random.randrange(8) 
print(move)
print(dinput)      
main()

将输入转换为列表,使用random.shuffle()对其进行混洗,然后将其转换为3x3嵌套列表网格。您可以使用input()从标准输入中一次读取一行。

nums = []
for _ in range(3):
line = input() # read a line
for c in line: # turn each character into a list element
nums.append(c)
random.shuffle(nums)
board = [nums[i:i+3] for i in range(0, len(nums), 3)] # convert the flat list to a 3x3 grid

最新更新