用 Python 实现 FLAMES 游戏



FLAMES 游戏是一款有趣且流行的游戏,它使用简单的算法来确定两个名字之间的关系。FLAMES 是以下可能关系的首字母缩写:友情 (Friendship)、爱情 (Love)、好感 (Affection)、婚姻 (Marriage)、敌意 (Enemy) 和兄弟姐妹 (Sibling)。本文将演示如何使用 Python 实现 FLAMES 游戏,并提供对所用概念的解释以及代码示例及其输出。

使用的概念

  • 字符串操作 - 从两个字符串中提取和比较字符。
  • 数据结构 - 使用列表和集合来管理和比较字符。
  • 循环和条件语句 - 遍历字符并应用条件来确定结果。

方法 1:基本实现

步骤 1:基本设置

我们将首先编写一个 Python 函数,该函数根据两个输入名称计算 FLAMES 结果。该方法包括 -

  • 删除空格并将名称转换为小写。
  • 计算两个名称中每个字符的频率。
  • 计算取消后剩余的字符。
  • 使用计数来确定 FLAMES 结果。

示例

def flames_game_basic(name1, name2): 
   # Remove spaces and convert to lowercase 
   name1 = name1.replace(" ", "").lower() 
   name2 = name2.replace(" ", "").lower() 

   # Remove common characters 
   for char in name1[:]: 
      if char in name2: 
         name1 = name1.replace(char, "", 1) 
         name2 = name2.replace(char, "", 1) 

   # Count the remaining characters 
   count = len(name1 + name2) 

   # FLAMES outcome based on the count 
   flames = ["Friendship", "Love", "Affection", "Marriage", "Enemy", "Sibling"] 
   while len(flames) > 1: 
      split_index = (count % len(flames)) - 1 
      if split_index >= 0: 
         flames = flames[split_index + 1:] + flames[:split_index] 
      else: 
         flames = flames[:len(flames) - 1] 

   return f"The relationship is: {flames[0]}" 

# Test the basic FLAMES game 
print(flames_game_basic("Alice", "Bob")) 

输出

The relationship is: Affection

解释

  • 字符串操作 - 程序删除空格并将两个名称转换为小写以保持一致性。
  • 删除公共字符 - 删除两个名称之间的公共字符。
  • 计算剩余字符 - 计算剩余字符的总数。
  • 确定 FLAMES 结果 - 使用计数循环遍历“FLAMES”中的字母以确定关系。

方法 2:带有输入验证的高级实现

在这种方法中,我们通过添加输入验证来增强基本实现,以确保名称是字母数字并且非空。此外,程序允许多轮游戏。

示例

以下是高级实现代码 -

def flames_game_advanced(): 
   while True: 
      name1 = input("Enter the first name: ").strip() 
      name2 = input("Enter the second name: ").strip() 

      # Validate inputs 
      if not name1.isalpha() or not name2.isalpha(): 
         print("Invalid input! Names should only contain alphabets and should not be empty.") 
         continue 

      # Remove common characters 
      for char in name1[:]: 
         if char in name2: 
            name1 = name1.replace(char, "", 1) 
            name2 = name2.replace(char, "", 1) 

      # Count the remaining characters 
      count = len(name1 + name2) 

      # FLAMES outcome based on the count 
      flames = ["Friendship", "Love", "Affection", "Marriage", "Enemy", "Sibling"] 
      while len(flames) > 1: 
         split_index = (count % len(flames)) - 1 
         if split_index >= 0: 
            flames = flames[split_index + 1:] + flames[:split_index] 
         else: 
            flames = flames[:len(flames) - 1] 

      print(f"The relationship is: {flames[0]}") 

      # Ask if the player wants to play again 
      another = input("Do you want to play again? (yes/no): ").strip().lower() 
      if another != 'yes': 
         break 

# Run the advanced FLAMES game 
flames_game_advanced() 

输出

Enter the first name: Alice 
Enter the second name: Bob 
The relationship is: Marriage 
  
Do you want to play again? (yes/no): no 

解释

  • 输入验证 - 程序确保两个名称仅包含字母字符并且非空。
  • 增强的用户交互 - 程序允许用户通过在每一轮之后询问他们是否要再次玩来玩多轮游戏。

结论

FLAMES 游戏是练习 Python 编程技能(包括字符串操作、循环和条件语句)的一种引人入胜的方式。本文探讨了 FLAMES 游戏的基本实现和高级实现,为进一步增强提供了坚实的基础,例如添加更复杂的关系结果或集成图形用户界面 (GUI)。

python_projects_from_basic_to_advanced.htm
广告