有两个喜爱运动的列表。一个是自动的,一个是用户输入的。找出它们的交集。

2024-09-30 01:37:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这个任务有一个内置的空闲,所以它必须处理它。 我不知道版本更新,但我假设它是2.1-2.7 我尝试了set_a & set_bset.intersect的东西,但是我使用的软件不支持这一点。 我将尝试合并if和for循环。 我有一个粗略的想法,拿每个列表元素和其他元素进行比较,直到所有元素都被比较,所以它有任何相似之处,只要说有多少相似之处。你知道吗

代码如下:

#Khushi Desai
#7/20/18
#Purpose: To see if me and the user have any similarities

def main():

myFavSports = ["Gymnastics", "High Jumping", "Table Tenis", "Golf", "Ice Skating"]
length = len(myFavSports)

print(" My Favorite Sports")
print("--------------------")
for n in range(0, len(myFavSports)):
    print(str(n + 1) +". "+ myFavSports[n] + "!")


favSport1 = input("What is your first favorite sport?")
favSport2 = input("What is your second favorite sport?")
favSport3 = input("What is your third favorite sport?")
favSport4 = input("What is your fourth favorite sport?")
favSport5 = input("What is your fifth favorite sport?")

yourFavSports = [favSport1, favSport2, favSport3, favSport4, favSport5]


print("")
print(" Your Favorite Sports")
print("----------------------")
for n in range(0, len(yourFavSports)):
    print(str(n + 1) +". "+ yourFavSports[n] + "!")


in_both_lists = []
for myFavSports in myFavSports:
    for yourFavSports in yourFavSports:
        if myFavSports == yourFavSports:
            in_both_lists.append(myFavSports)

print "We both love {}: {}".format(
    len(in_both_lists),
    ", ".join(in_both_lists),
)

主()

另外,我尝试了这个方法,但它只是比较第一个。你知道吗


Tags: inforinputyourleniswhatfavorite
2条回答

您的in_both_lists循环正在重新定义myFavSportsyourFavSports,因为您在循环的每一侧使用相同的变量名。你知道吗

Python循环语法定义为:

for item in list:

当前正在使用

for list in list:

所以list被重新定义为item。你知道吗

您的解决方案对迭代中的项和列表的名称使用相同的变量名。要修复解决方案,可以执行以下操作:

in_both_lists = []
for mySport in myFavSports:
    for yourSport in yourFavSports:
        if mySport == yourSport:
            in_both_lists.append(mySport)

或者你可以这样做:

in_both_lists = [sport for sport in yourFavSports if sport in myFavSports]

相关问题 更多 >

    热门问题