我遇到了python脚本的一些问题。我对这种语言并不擅长,因为我正在为我的朋友做点什么。
代码正在运行,但输出很奇怪。一些随机的东西而不是二进制数。
以下是代码:
def decToBin(n):
wynik = ""
while n > 0:
wynik = str(n % 2) + wynik
n = n / 2
return wynik
print("zamiana liczb z systemu dziesietnego na binarny")
with open('program.txt', 'r') as plik: # otwieramy plik do odczytu
for line in plik:
x=int(line)
with open('wyniki.txt', 'w') as plik1:
plik1.write(decToBin(x))
plik1.close()
plik.close()
这是脚本的链接: repl.it
/编辑 好了,想通了,现在这里是代码:
def decToBin(n):
wynik = ""
while n > 0:
wynik = str(n % 2) + wynik
n = int(n/2)
return wynik
plik1=open('wyniki.txt', 'w')
print("zamiana liczb z systemu dziesietnego na binarny")
with open('program.txt', 'r') as plik: # otwieramy plik do odczytu
for line in plik:
x = int(line)
plik1.write(decToBin(x))
plik1.write("\n")
plik1.close()
答案 0 :(得分:1)
首先要做的事情是:已经有一些东西正是你正在尝试做的事情,所以使用它是明智和有效的:
for char in text:
bin(int(char))
我猜你的代码中的问题是你正在使用Python 3.x,其中整数之间的标准除法返回一个浮点数(从[https://www.python.org/dev/peps/pep-0238/][PEP-0238]开始)。 以下是关于如何更改功能以使其工作的建议。您可以根据内置的 bin 功能进行检查:
def decToBin(n):
wynik = ""
while n > 0:
wynik = str(n % 2) + wynik
n = n // 2
return wynik
答案 1 :(得分:0)
这是为文本示例执行此操作的方法 - Python不会像Java / C那样将字符转换为int。相反,您将获得序数值,然后将其转换为二进制数
def to_bin(c):
bin_rep = bin(ord(c))
print bin_rep # for testing
return bin_rep # can be written to a file here or not...
text = "Hello there"
for each_char in text:
to_bin(each_char)
我认为这种方法值得尝试使用输入文件的示例,然后重构为r / w文件。
要对文件执行此操作,请尝试以下操作:
write_str = ""
with open('program.txt', 'r') as plik: # otwieramy plik do odczytu
for line in plik:
for each_char in line:
write_str += str(to_bin(each_char))
with open('wyniki.txt', 'w') as plik1:
plik1.write(write_str)
plik1.close()
plik.close()
如果您想要反转字节的顺序,整个文件可以反转或更改 write_str + = str(to_bin(each_char)) 至 write_str = str(to_bin(each_char))+ write_str