我是编程和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循环中写出它并放弃该函数,但这是同样的问题。
我没有看到任何导致这种情况的事情,我没有错误,只是一个挂起的程序。
任何帮助表示赞赏!
此外,我确信有一种更简单的方式来写这个,所以向正确的方向推进也会很棒!!
list.append(x)将项“x”添加到列表的末尾。您的代码遍历列表'hand',但每次执行此操作时,它会在列表末尾添加一个新项。因此,列表永远不会结束,所以你的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)
或者,您可以使用a
()直接更改列表enumerate中的项目,而无需调用单独的函数。 enumerate()
函数返回一个元组列表,每个元组包含最后一个项目的索引(从0开始,第一个项目的索引)及其值。所以enumerate(a)
回归:
[(0, "a"), (1, "b"), (2, "c"), (3, "d"), (4, "e")]
这意味着您可以像这样替换列表a
中的每个项目:
for index, value in enumerate(a):
a[index] = "[" + value + "]"
然后list a
的值应为:
["[a]", "[b]", "[c]", "[d]", "[e]"]
如果那不是您想要的,请告诉我们。
您通过在循环中附加到hand
来创建无限循环。
尝试这样的东西用括号打印手:
def show_cards(hand):
for c in hand:
print("[" + c + "]")
如果您愿意,也可以附加到字符串并返回。