0

我有这段代码,当你猜对答案时,它会循环回到相同的原始随机选择。我需要能够选择我认为哪个拥有更多追随者,并且如果它的正确循环返回两个完全不同的随机选择,则与第一个不同。

import game_data
import random
import art

names = random.choice(game_data.data)
names2 = random.choice(game_data.data)
correct_score = int()

def game(name,names2,correct_score):
    #print(art.logo)
    follower_count = names['follower_count']
    print(f"Compare A: {names['name']}, a {names['description']}, from {names['country']}.")
    #print(art.vs)
    follower_count2 = names2['follower_count']
    print(f"Against B: {names2['name']}, a {names2['description']}, from {names2['country']}.")
    answer = input("Who has more followers 'A' or 'B': ").lower()
    if answer == 'a' and follower_count > follower_count2:
        print("Correct")
        correct_score += 1
        print(correct_score)
        game(name=names,names2=names2,correct_score=correct_score)
    elif answer == 'b' and follower_count2 > follower_count:
        print("Correct")
        correct_score += 1
        print(correct_score)
        game(name=names,names2=names2,correct_score=correct_score)


game(name=names,names2=names2,correct_score=correct_score)

这是我的其他文件代码的示例。

data = [
    {
        'name': 'Instagram',
        'follower_count': 346,
        'description': 'Social media platform',
        'country': 'United States'
    },
    {
        'name': 'Cristiano Ronaldo',
        'follower_count': 215,
        'description': 'Footballer',
        'country': 'Portugal'
    },
    {
        'name': 'Ariana Grande',
        'follower_count': 183,
        'description': 'Musician and actress',
        'country': 'United States'
    },
    {
        'name': 'Dwayne Johnson',
        'follower_count': 181,
        'description': 'Actor and professional wrestler',
        'country': 'United States'
    },
]
4

1 回答 1

1

像这样的递归需要两件事

首先,您的算法必须有一个终止条件。也就是说,必须有一种方法可以让您的函数在不调用自身的情况下终止。

其次,您的算法必须将不同的状态(参数)传递给再次调用自身,因此它可以进一步做出终止递归的决定。如果状态(参数)保持不变,您如何决定何时完成?

而已!这正是您需要考虑的两件事。

于 2021-09-19T16:09:17.993 回答