[英]How do I make python recognise spam as a list and not a string
我试图让我的程序接受用户输入的列表并将其用作 stringList function 的参数,但它一直认为该列表只是一个字符串。 我如何才能将其视为实际列表?
这是我到目前为止的代码:
spam = ["apples", "bananas", "tofu", "cats"]
sillyList = []
def stringList(list):
ending = len(list)
try:
print()
for item in list[0: ending - 1]:
print(item, end=", ")
print("and " + list[ending - 1])
except:
print("Error: List contains no items. Do you wish to try again?")
answer = input().lower()
if answer == "yes" or "y":
print()
askListName()
elif answer == "no" or "n":
sys.exit()
def askListName():
print("Enter the list name:")
listName = input()
try:
stringList(listName)
except:
print("Error: Invalid list name.")
askListName()
如果输入由空格分隔或如下所示:
'apples oranges kiwi'
listName = input()
fruit = listName.split()
stringList(fruit)
如果输入由逗号分隔或看起来像这样:
'apples,oranges,kiwi'
listName = input()
fruit = listName.split(',')
stringList(fruit)
string.split
方法通过您提供的参数分隔字符串。 所以.split('|')
会用 '|' 分隔输入字符串特点。 如果您省略该参数,则默认为按空格拆分字符串。
程序中的变量名称是硬编码的 - Python 文件的一部分。 用户在运行时在“输入”中键入的值,或者程序运行时从数据文件中读取的值,都是“数据”。
这两者是两个截然不同的东西,你应该用你的学习方式来了解它们的区别。
目前:Python 是少数允许“变量名”和“数据”“桥接”的语言之一:有一种特殊的数据结构,即字典,Python 使用它们来保存变量名。 “globals()”调用将返回一个字典,其中包含您程序中的所有全局变量,因此如果您从那里获取spam
列表,则可以检索它。 只需更改此行:
stringList(listName)
到
stringList(globals()[listName])
你的程序将越过你被卡住的那一点。 (虽然我没有检查进一步的错误)
将来,如果您希望用户输入与程序中键入的名称进行交互,建议将此数据放在一个单独的、明确创建的字典中——例如: mydata = {"spam": ["apple", ...], "sillyList": [...]}
,那么所有用户输入都必须是mydata
键之一,并且不能破坏你的程序。
此外,还有其他几点:您不应该在 function 中使用sys.exit
:只需从它返回,并最终让您的代码执行“脱离”主文件的底部。 此外,避免使用常见的 Python 内置函数作为变量名:这会让您的读者感到困惑,并且可能会阻止您使用这些结构。 在这种情况下,在你的函数中你使用“列表”。 更喜欢“lst”、“sequence”、“list_”或类似的,以免影响 Python 自己的“list”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.