Python陪练1 求异实例 —找单独的数

在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。

要求:

设计一个算法,使其时间复杂度为 O(n),其中 n 是班级的人数。
尽量减少额外空间的使用,以体现你的算法优化能力。
测试样例
样例1:

输入:cards = [1, 1, 2, 2, 3, 3, 4, 5, 5]
输出:4
解释:拿到数字 4 的同学是唯一一个没有配对的。

输入:cards = [0, 1, 0, 1, 2]
输出:2
解释:数字 2 只出现一次,是独特的卡片。


def solution(cards):     # 定义了一个名为 find_unique_card 的函数,它接受一个参数 cards,代表班级中同学们拿到的卡片上的整数列表    
    result = 0           #初始化一个变量 result 为 0。这个变量将用于存储通过异或运算得到的结果 

    for card in cards :  #这是一个循环,遍历输入列表 cards 中的每一个元素
        result ^= card   #使用异或运算符 ^    任何数与自身异或结果为 0,而 0 与任何数异或结果为该数。result 最终将存储那个唯一的数字。
    return result        #函数返回 result,即找到的唯一的数字


cards = [1, 1, 2, 2, 3, 3, 4, 5, 5]     
print(solution(cards))   #调用 find_unique_card 函数,并将结果打印出来

def solution(cards):     # 定义了一个名为 find_unique_card 的函数,它接受一个参数 cards,代表班级中同学们拿到的卡片上的整数列表    
    result = 0           #初始化一个变量 result 为 0。这个变量将用于存储通过异或运算得到的结果 

    for card in cards :  #这是一个循环,遍历输入列表 cards 中的每一个元素
        result ^= card   #使用异或运算符 ^    任何数与自身异或结果为 0,而 0 与任何数异或结果为该数。result 最终将存储那个唯一的数字。
    return result        #函数返回 result,即找到的唯一的数字


cards = [1, 1, 2, 2, 3, 3, 4, 5, 5]     
print(solution(cards))   #调用 find_unique_card 函数,并将结果打印出来
'''
可以用if __name__ == "__main__":封装一个模块,作测试代码
'''
if __name__ == "__main__":   #是一个常用的条件判断语句,其作用主要是区分当前脚本是作为主程序直接运行还是被作为模块导入到其他脚本中。
    cards = [1, 1, 2, 2, 3, 3, 4, 5, 5]     
    print(solution(cards))   #调用 find_unique_card 函数,并将结果打印出来

    cards2 = [0, 1, 0, 1, 2]
    print(solution(cards2))

在 Python 中,if __name__ == "__main__": 是一个常用的条件判断语句,其作用主要是区分当前脚本是作为主程序直接运行还是被作为模块导入到其他脚本中。以下是对它的详细解析:

  1. __name__ 变量
  • 在 Python 中,每个模块都有一个名为 __name__ 的内置变量。
  • 当一个模块被直接运行时,__name__ 的值被设置为 "__main__"
  • 当一个模块被导入到其他模块中时,__name__ 的值被设置为模块的名称(不包括 .py 扩展名)。
  1. if __name__ == "__main__": 的作用
  • 这个条件语句用于判断当前模块是否作为主程序直接运行。
  • 如果当前模块是直接运行的,那么条件为真,语句块中的代码将被执行。
  • 如果当前模块是被导入到其他模块中,那么条件为假,语句块中的代码将不会被执行。
  1. 实际应用场景
  • 通常用于测试代码:可以在模块中编写一些测试函数或示例代码,并将它们放在 if __name__ == "__main__": 语句块中。这样,当直接运行该模块时,测试代码会被执行,而当该模块被导入到其他模块中时,测试代码不会被执行,避免了不必要的代码执行。
  • 方便模块的复用:可以将一些通用的功能封装在一个模块中,并在 if __name__ == "__main__": 语句块中提供一些示例用法或测试用例。这样,其他开发者可以导入这个模块并使用其中的功能,而不会受到测试代码的干扰。

例如,在上述代码中:

if __name__ == "__main__":
    cards = [1, 1, 2, 2, 3, 3, 4, 5, 5]
    print(find_unique_card(cards))

如果这个脚本被直接运行,那么 cards 列表将被创建,并且 find_unique_card 函数将被调用,输出找到的唯一数字。如果这个脚本被作为模块导入到其他脚本中,这段代码将不会被执行,只有在其他脚本中明确调用 find_unique_card 函数时,该函数才会被执行。

  • 天道酬勤

    与人方便,与己方便。

    Related Posts

    python练习3

    小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。 测试样例样例1: 输入:s = “1294512.12412”输出:’1,294,512.12412′ 样例2: 输入:s = “0000123456789.99”输出:’123,456,789.99′ 样例3: 输入:s = “987654321”输出:’987,654,321′ ②

    Python陪练2–二维数组

    小R正在计划一次从地点A到地点B的徒步旅行,总路程需要 N 天。为了在旅途中保持充足的能量,小R每天必须消耗1份食物。幸运的是,小R在路途中每天都会经过一个补给站,可以先购买完食物后再消耗今天的1份食物。然而,每个补给站的食物每份的价格可能不同,并且小R在购买完食物后最多只能同时携带 K 份食物。 现在,小R希望在保证每天食物消耗的前提下,以最小的花费完成这次徒步旅行。你能帮助小R计算出最低的花费是多少吗? **输入 ** n 总路程需要的天数k 小R最多能同时携带食物的份数data[i] 第i天补给站每份食物的价格**输出 ** 返回完成这次徒步旅行的最小花费**约束条件 ** 1 < n,k < 10001 < data[i] < 10000测试样例样例1: 输入:n = 5 ,k = 2…

    You Missed

    四大顶尖AI模型

    线上数字人体验地址

    DeepSeek在线使用平台汇总

    AI工具集

    分享目前最全AI工具合集

    python练习3