运行后代码不输出任何内容

时间:2018-04-02 00:07:18

标签: python

我需要这样做:

  1. 创建一个用于存储框架的空列表
  2. 细分字符串。
  3. 遍历段,通过调用string2bin将每个段转换为帧。
  4. 将框架附加到框架列表。
  5. 返回框架列表。
  6. 这是我的代码到目前为止,问题出现在它应该如何测试的部分中它表示需要在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
    

1 个答案:

答案 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]

...但你应该确保先了解第一个版本,然后在你正在使用的任何教程中阅读列表推导,然后找出他们为什么做同样的事情。