如何将列表中的项目组合为一个



我对如何使我的物品在列表中将几个字符视为一个只是有些困惑。到目前为止,整个事情看起来像:

classes=input("Enter your classes: " )
     def printsched(classes):
          for n in classes:
               print(n)
          return len(classes)
printsched(classes)
print(printsched(classes))

当我以诸如["GE0 101", "PSY 101", "GER 104"]之类的形式输入类时,我希望它将其打印出来:

GEO 101
PSY 101
GER 104

请参阅下面看看它给了我什么。它将每个字符视为列表中的一个项目。我还需要它返回列表中所有字符的价值,所以在此示例中,我希望它是21个,但是它给了我34项目?

[
"
G
E
0
1
0
1
"
,
"
P
S
Y
1
0
1
"
,
"
G
E
R
1
0
4
"
]

input始终导致单个str。如果您想将此字符串解析为类似于JSON的字符串,则可以使用json模块。

import json
classes=json.loads(input("Enter your classes: " ))
def printsched(classes):
    for n in classes:
        print(n)
    return len("".join(classes))
printsched(classes)

对于更具用户友好的输入,您可以使用拆分功能和修剪功能。

classes=[x.trim() for x in input("Enter your classes: " ).split(",")]
def printsched(classes):
    for n in classes:
        print(n)
    return len("".join(classes))
printsched(classes)

注意:不要在单个方法中添加多个东西。该方法将变得混乱和不清楚。该方法的单一责任是什么(打印或计算输入字符串的长度(

classes=[x.trim() for x in input("Enter your classes: " ).split(",")]
def print_classes(classes):
    for n in classes:
        print(n)
def calc_length(classes
    return len("".join(classes))
print_classes(classes)
print(calc_length(classes))

classes = input("Enter your classes: ").strip('[""]').split('","')

这应该有效

[update]

使用ast.literal_eval()代替危险eval()(正如弗朗西斯·科拉斯(Francis Colas(在评论中指出的那样(

import ast
classes=input("Enter your classes: " )
def printsched(classes):
    classes = ast.literal_eval(classes)
    for n in classes:
        print(n)
    return len(classes)
printsched(classes)

[原始]

我建议简单地使用eval()如下:

classes=input("Enter your classes: " )
def printsched(classes):
    classes = eval(classes)
    for n in classes:
        print(n)
    return len(classes)
printsched(classes)

相关内容

  • 没有找到相关文章

最新更新