【问题标题】:Python question about randomizing from standard input关于从标准输入随机化的 Python 问题
【发布时间】:2020-09-21 22:39:08
【问题描述】:
  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()

【问题讨论】:

    标签: python


    【解决方案1】:

    将输入转换为列表,使用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
    

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2020-12-27
      相关资源
      最近更新 更多