【问题标题】:How do I return (k) amount of bits a binary strings in a file?如何在文件中返回(k)位二进制字符串?
【发布时间】:2017-08-23 14:47:33
【问题描述】:

基本上,如果我为 n 输入 4,为 k 输入 4,它应该在文件中返回 4 行 4 位二进制字符串。

相反,它返回四行二进制,但按位升序排列。 (所以第一行有一个位,第二行有两个,第三行有三个,依此类推。)

这是我的代码:

import random
def makeStrings():
    fileName = str(input("file:"))
    outputFile = open(fileName, "w")
    userInput = str(input("k:"))
    anotherinput = str(input("n:"))
    counter = 0
    while (counter < int(anotherinput)):
        stringy = ""
        for i in range(int(userInput)): 
            RandoNumber=int(random.random()*2)
            stringy=stringy+str(RandoNumber) 
            outputFile.write(str(stringy) + "\n")
            counter = counter +1
    outputFile.close()

感谢您的帮助!

【问题讨论】:

    标签: python file binary bit


    【解决方案1】:

    在这段代码中:

        stringy = ""
        for i in range(int(userInput)): 
            RandoNumber=int(random.random()*2)
            stringy=stringy+str(RandoNumber) 
            outputFile.write(str(stringy) + "\n")
            counter = counter +1
    

    您正在循环到 userInput,但每次都打印。 (在这种情况下,每次都是outputFile.writeing。)

    您需要等到for 循环完成后再将值写入输出文件。这样,您的 stringy 变量将具有正确的长度。

    【讨论】:

      【解决方案2】:

      您错误地处理了循环索引。您的内部循环将每个添加写入字符串。您的外循环与内循环并行运行; counter 每次通过内部循环都会递增。试试这个。我简化了几行测试。

      userInput = 4
      anotherinput = 4
      for counter in range(int(anotherinput)):
          stringy = ""
          for i in range(int(userInput)): 
              RandoNumber=int(random.random()*2)
              stringy=stringy+str(RandoNumber) 
          print(str(stringy) + "\n")
      # outputFile.close()
      

      【讨论】:

      • 非常感谢!我知道这是一个简单的解决方法,但我想不通。
      猜你喜欢
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多