我对编程和python很陌生。我正在尝试使用以下代码:
def show_cards(hand):
for c in hand:
b = "[" + c + "]"
hand.append(b)
a = ["a","b","c","d"]
show_cards(a)
print(a)
但是,只要这样做,该程序就会挂起。我以为可能是我的编辑器(pycharm),但我也尝试在终端中运行它,结果是一样的。
实际上,我应该注意,在pycharm中,我遇到键盘中断错误,该错误会闪烁一秒钟然后消失。我没有在终端中得到这个。
我试图将其写成for循环并放弃该函数,但这是同样的问题。
我看不到会导致这种情况的任何东西,而且没有错误,只是程序挂了。
感谢您的帮助!
此外,我敢肯定有一种更简单的方法可以编写此代码,因此朝着正确的方向推进也将是一件好事!
答案 0 :(得分:4)
列表。append(x)将项目“ x”添加到列表末尾。您的代码遍历列表“手”,但是每次这样做都会在列表末尾添加一个新项。因此,列表将永远不会结束,因此for
循环也不会结束。
关于一种更简单的编写方法,这取决于您要完成的工作。如果您想要的是在方括号中包含相同项目的列表,则可以尝试如下操作:
def show_cards(hand):
new_list = []
for c in hand:
b = "[" + c + "]"
new_list.append(b)
return(new_list)
return()语句允许函数生成新列表,然后您可以将其分配给变量a
,如下所示:
a = show_cards(a)
或者,您可以使用 enumerate()直接更改列表a
中的项目,而无需调用单独的函数。 enumerate()
函数返回一个元组列表,其中每个元组都包含最后一项的索引(从0开始,即第一项的索引)及其值。因此enumerate(a)
返回:
[(0, "a"), (1, "b"), (2, "c"), (3, "d"), (4, "e")]
这意味着您可以像这样替换列表a
中的每个项目:
for index, value in enumerate(a):
a[index] = "[" + value + "]"
然后列表a
的值应为:
["[a]", "[b]", "[c]", "[d]", "[e]"]
如果那不是您想要的,请告诉我们。
答案 1 :(得分:0)
您正在通过在循环内附加到hand
来创建无限循环。
尝试类似这样的方法,以便在球拍上打印手:
def show_cards(hand):
for c in hand:
print("[" + c + "]")
如果需要,您还可以附加到字符串并返回它。