gpt4 book ai didi

python - 无法让 shell 中的代码作为程序运行

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:52 25 4
gpt4 key购买 nike

我正在学习“Automate the Boring Stuff with Python”这本书,但被其中一个练习题卡住了。我的解决方案在 shell 中有效,但当我尝试将其作为程序运行时却无效。下面是问题提示:

Say you have a list value like this:

spam = ['apples', 'bananas', 'tofu', 'cats']

Write a function that takes a list value as an argument and returns a string with all the items separated by a comma and a space, with and inserted before the last item. For example, passing the previous spam list to the function would return 'apples, bananas, tofu, and cats'. But your function should be able to work with any list value passed to it.

这是我的代码:

def listToString(usersList):
myStr = ', '.join(str(i) for i in usersList[0:-1]) # converts all but last list element to string and joins with commas
myStr = myStr + ' and ' + str(usersList[-1]) # adds on "and", converts final list element to string and adds to myStr
print(myStr)

myList = input()
listToString(myList)

当我在 shell 中定义一个列表并对其运行上述步骤时,我得到了我想要的结果:

'apples, bananas, tofu and cats' 

但是当我尝试将上述程序中的步骤组合在一起时,结果是这样的:

[, a, p, p, l, e, s, ,,  , b, a, n, a, n, a, s, ,,  , t, o, f, u, ,,  , c, a, t, s and ]

有什么想法吗?

非常感谢您花时间阅读本文。关于 SO 上的同一练习题还有其他几个主题(herehere),但我仍然卡住了,所以我继续发帖。

最佳答案

input()返回一个字符串。在使用 str.split 传递给函数之前,您需要将字符串转换为列表

myList = input().split()  # 'apple banana' -> ['apple', 'banana']

否则,string被迭代;产生每个字符作为项目。

>>> a_string = 'abcd'
>>> for x in a_string:
... print(x)
...
a
b
c
d

关于python - 无法让 shell 中的代码作为程序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40702147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com