判断两数是否含相同数字的Python程序大数字无输出问题求助
数字公共字符检测程序的修复
需求与问题
需求:给定两个任意长度、允许数字重复的数字,若二者包含相同数字,打印Numerele sunt prietene;否则打印Numerele nu sunt prietene。
问题:输入大数字时程序无任何输出。
原代码问题分析
原代码核心逻辑存在严重漏洞:
- 仅当
nr1的最后一位与nr2的某一位匹配时才触发输出,若匹配数字不在nr1末尾,程序不会执行输出操作 - 嵌套循环中
val的重置和判断逻辑混乱,部分场景下会直接跳出循环却不输出结果
修复方案
简化逻辑,利用集合交集操作快速判断两个数字字符串是否存在公共字符,代码如下:
# 直接读取输入为字符串,无需转整数,处理大数字更高效 a = input("a → ") b = input("b → ") # 集合交集判断是否存在公共数字 if set(a) & set(b): print("Numerele sunt prietene") else: print("Numerele nu sunt prietene")
方案说明
- 以字符串形式读取输入,避免大整数转换的冗余操作
- 集合交集
set(a) & set(b)会返回两个字符串的公共字符集合,集合非空则说明存在相同数字 - 逻辑简洁清晰,彻底规避原代码的嵌套循环逻辑错误,无论数字长度多大都能正确输出结果
内容的提问来源于stack exchange,提问作者Mihai Creciun
相关产品推荐
相关产品推荐

