查询级别:初学者
作为学习练习的一部分,我编写了一些代码,必须检查一个字符串(因为它是通过原始输入构建的)是否与任何列表项的开头匹配,以及它是否等于任何列表项。在
wordlist = ['hello', 'bye']
handlist = []
letter = raw_input('enter letter: ')
handlist.append(letter)
hand = "".join(handlist)
for item in wordlist:
if item.startswith(hand):
while item.startswith(hand):
if hand not in wordlist:
letter = raw_input('enter letter: ')
handlist.append(letter)
hand = "".join(handlist)
else: break
else: break
print 'you loose'
这段代码可以工作,但是如何改进我的代码(以及我的推理/方法)?
我觉得我的IF
、WHILE
和FOR
语句的嵌套有点过分了。在
编辑 多亏了Dave,我能够大大缩短和优化我的代码。在
^{pr2}$我很惊讶我原来的代码能工作。。。在
{{{cd2>你不需要把cd3}的值连在一起。在
您可以保存第一个}为
raw_input
,方法是用hand
作为空字符串启动while
循环,因为每个字符串都有{True
。在最后,我们需要找出最好的方法来查看
wordlist
中是否有任何项以hand
开头。对此,我们可以使用列表理解:然后检查返回列表的长度是否大于零。在
然而,更好的是,python有the ^{} function ,这是非常适合的:如果iterable的任何元素是
True
,那么它将返回True
,因此我们只需为wordlist
的每个成员计算startswith()
。在把这些放在一起我们得到:
^{pr2}$相关问题 更多 >
编程相关推荐