我试图让我的程序接受用户输入的列表,并使用它作为stringList函数的参数,但是它一直认为列表只是一个字符串。我怎样才能把它看作是一份真正的清单呢?
下面是我到目前为止掌握的代码:
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()发布于 2022-05-10 21:37:19
变量名被硬编码在程序中-- Python文件的一部分。用户在运行时在“输入”中输入的值,或者在程序运行时从数据文件中读取的值,都是“数据”。
这两件事是完全不同的,你应该用你的学习方法来了解它们的区别。
现在: Python是少数几种允许“变量名”和“数据”同时“桥接”的语言之一:有一种特殊的数据结构是字典,Python使用这些语言来保存变量名。"globals()“调用将返回一个字典,该字典包含程序中的所有全局变量,因此,如果从其中获取spam列表,则可以检索它。只需更改这一行:
stringList(listName)至
stringList(globals()[listName])你的程序就会超过你被卡住的那个点。(不过,我没有检查进一步的错误)
将来,如果希望用户输入与程序中键入的名称交互,建议将这些数据放在单独的、显式创建的字典中,如In:mydata = {"spam": ["apple", ...], "sillyList": [...]},那么所有用户输入必须是mydata键之一,不能破坏程序。
此外,还有其他要点:您不应该在函数中使用sys.exit:只需从函数中返回,并最终允许您的代码执行“从主文件的底部掉下来”。此外,避免使用普通Python内置的变量名称:这会使读者感到困惑,并且可能会阻止您使用这些构造。在这种情况下,在函数中使用"list“。更喜欢"lst“、"sequence”、"list_“或类似的,以免影响Python自己的”列表“。
发布于 2022-05-10 21:35:54
如果输入由空格分隔或如下所示:
'apples oranges kiwi'
listName = input()
fruit = listName.split()
stringList(fruit)如果输入由逗号分隔,或者如下所示:
'apples,oranges,kiwi'
listName = input()
fruit = listName.split(',')
stringList(fruit)string.split方法通过提供的参数分隔字符串。因此,.split('|')将输入字符串分隔为‘\’字符。如果省略了参数,则默认情况下使用空格拆分字符串。
https://stackoverflow.com/questions/72193089
复制相似问题