我需要这样做:
这是我的代码到目前为止,问题出现在它应该如何测试的部分中它表示需要在6 - 7中填充“填充字符”,就像我在它应该如何显示的示例中一样测试
def string2frames(a,b):
frame = []
for var in a.split():
convert = string2bin(a)
frame.append(convert)
return frame
这是我的代码的输出:
0 [0, 1, 0, 0, 1, 0, 0, 0] H
1 [0, 1, 1, 0, 0, 1, 0, 1] e
2 [0, 1, 1, 0, 1, 1, 0, 0] l
3 [0, 1, 1, 0, 1, 1, 0, 0] l
4 [0, 1, 1, 0, 1, 1, 1, 1] o
5 [0, 0, 1, 0, 0, 0, 0, 1] !
这是应该如何测试的:
>>> s = "Hello!"
>>> frames = string2frames(s, ' ')
>>> printFrames(frames)
frame 0
0 [0, 1, 0, 0, 1, 0, 0, 0] H
1 [0, 1, 1, 0, 0, 1, 0, 1] e
2 [0, 1, 1, 0, 1, 1, 0, 0] l
3 [0, 1, 1, 0, 1, 1, 0, 0] l
4 [0, 1, 1, 0, 1, 1, 1, 1] o
5 [0, 0, 1, 0, 0, 0, 0, 0]
6 [0, 0, 1, 0, 0, 0, 0, 0]
7 [0, 0, 1, 0, 0, 0, 0, 0]
这是string2frames函数所需的string2bin函数:
def string2bin(s):
y = []
for x in s:
q = [int(c) for c in (str(bin(ord(x))[2:].zfill(8)))]
y.append(q)
return y
答案 0 :(得分:1)
我不知道这个string2bin
函数是什么,但它几乎肯定会返回一个有用的值,并且该值是你想要附加到结果的值,所以你需要将它存储在一个变量然后使用该变量。
与此同时,你忽略a
中的任何内容并将其替换为空列表。你需要一个不同的名字。
您循环显示该空列表并尝试添加到同一列表中。这没有任何意义。您希望遍历输入列表,并附加到不同的输出列表。
我不确定你的意思是"分段"。如果你的输入是一个单独值的列表,只需循环它for var in a:
是有意义的,但如果它是一个字符串,你需要分成单个字符串,你和# 39; d需要for var in a.split():
,如果它意味着别的......好吧,首先你需要弄清楚它的含义,然后你可以把它变成代码。
最后,我不知道b
参数是什么 - 在您的问题描述中没有提到它,并且它不会在您的代码中的任何位置使用。所以,我会假设你实际上并不需要它。
所以:
def string2frames(a):
result = []
for var in a:
binvar = string2bin(var)
result.append(binvar)
return result
或者,你可以更简洁地写出来:
def string2frames(a):
return [string2bin(var) for var in a]
...但你应该确保先了解第一个版本,然后在你正在使用的任何教程中阅读列表推导,然后找出他们为什么做同样的事情。