Python中如何实现动态输入数量下的多变量相等性自动判断?
解决方案
你当前代码的问题是硬编码了3个变量的相等判断,且用globals()动态创建变量的写法不利于批量处理逻辑,修改方案如下:
优化后完整代码
print('Counts:') count = int(input()) print('Lengths:') nm_len = int(input()) numbers = [] print('Input numbers:') numbers = [input().strip() for i in range(count)] # 直接存字符串即可,避免长数字冗余转换 print('Numbers stored!') print(numbers) # 统一存储所有数字拆分后的数位列表,替代动态全局变量 digit_lists = [] for num_str in numbers: digit_lists.append([int(d) for d in num_str]) print('Same numbers:') for j in range(nm_len): # 用all()动态判断所有数字的第j位是否相等,自动适配输入的数字数量 if all(d_list[j] == digit_lists[0][j] for d_list in digit_lists): print(j+1, '. number is same')
修改说明
- 取消了用
globals()动态创建nm0/nm1这类变量的逻辑,改为将所有数字拆分后的数位列表统一存入digit_lists,方便批量遍历 - 相等判断逻辑改用内置的
all()函数实现,会自动遍历digit_lists中所有元素的第j位和第一位比较,只要输入的数字数量≥1都能正常运行,不需要硬编码变量名 - 额外优化:输入数字时直接存字符串,省略了先转int再转str的冗余操作,也避免了极端长数字的处理风险
内容的提问来源于stack exchange,提问作者user11994246
相关产品推荐
相关产品推荐

