如何在文件中返回(k)二进制字符串的位数?

时间:2017-03-29 22:01:46

标签: python file binary bit

基本上,如果我输入4表示n,4表示k,它应该在文件中返回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()

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

在此代码中:

    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.write。)

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

答案 1 :(得分:0)

您错误处理了循环索引。你的内部循环写入字符串的每一个添加。你的外环与内环平行运行;每次通过内循环时,计数器会递增。试试这个。我简化了几行测试。

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()