为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2023-08-22 18:23:55
我的问题是,在我的r.py文件中,它需要两个命令行参数(随机数生成器种子和随机移动数),我试图从标准输入文件中读取并以 3x3 输出格式打印输出板这就像标准输入文件,除了随机化之外。标准输入文件仅包含 3x3 格式的值,例如123 456 789每 3 个数字后换行,就像矩阵一样。我曾经sys.stdin读取我的输入文件,但如何正确使用它,以便我可以随机化输入文件的值(3x3 格式,每 3 个数字后换行:123 456 789)以达到我想要的应该随机化的输出文件但与输入文件一样采用 3x3 格式。这是我到目前为止所拥有的。我可以让它打印原始输入文件,但在打印时无法将其随机化。#!/usr/bin/env python3# -*- coding: utf-8 -*-import sys, randomdinput=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()
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信