首先,我道歉,我是一个极端的初学者,所以我可能会听起来无知。你知道吗
我有5个单词集。其中4个是通过csv导入的,另一个是通过用户输入创建的。我想找出输入集和其他集的交集。然后根据有多少个十字路口来奖励积分。你知道吗
例如,我想找出“set\u 1”和“input\u set”之间的交集。对于每个交叉口,用户评分加1。然后,找到“set\u 2”和“input\u set”之间的交集,并为这些交集中的每个交集添加2到用户\u分数。以此类推,每个交叉口增加4个。你知道吗
我会使用if循环还是for循环?你知道吗
像这样的?你知道吗
user_score = 0
for x in intersect(input_set, set_1):
user_score += 1
for x in intersect(input_set, set_2):
user_score += 2
for x in intersect(input_set, set_3):
user_score += 3
for x in intersect(input_set, set_4):
user_score += 4
或者像这样?你知道吗
if intersect(input_set, set_1):
user_score += 1
elif intersect(input_set, set_2):
user_score += 2
elif intersect(input_set, set_3):
user_score += 3
elif intersect(input_set, set_4):
user_score += 4
还是我走远了?感谢您的帮助。谢谢!你知道吗
这是:
…不是循环的工作方式。您需要一个循环变量,如下所示:
如果你不在乎“东西”是什么,你可以称之为
_
。这没有任何特殊的含义,但通常意味着它是一个无用的虚拟变量:同时,如果您使用的是内置的
set
类型,则没有名为intersect
的函数,但有一个名为intersection
的方法,您可以这样使用:也可以将其拼写为
&
运算符。你知道吗但是,如果你仔细想想,有一种更快的方法可以做到这一点:不要循环,只要得到交叉点的
len
。所以:最后一个改进:与其为四个集合设置四个独立的变量,为什么不只设置一个集合列表呢?您是否也有四个复制和粘贴的代码块略有变化,以创建单独的变量?如果是这样,就把他们赶走。然后你可以这样做:
即使有单独的变量,也可以随时创建
user_set
,如下所示:不过,最好是一开始就有一个集合列表,而不是四个独立的变量。关于这方面的更多讨论,请参见this blog post和this one。你知道吗
相关问题 更多 >
编程相关推荐