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