排查判断自然数是否由相同数字组成的Python代码错误
问题分析与修正
你的代码存在几个逻辑错误,导致无法正确判断数字是否由相同数字组成:
- 基准值初始化错误:你把
a初始设为0,当输入包含0的数字(比如10)时,第一个取出的0会和a相等,将same设为True,后续取出的1和a不等,但same不会被改回False,最终错误输出YES。 - 状态逻辑颠倒:你默认
same为False,只要有一个数字和a相等就设为True,但如果后续出现不同数字,same不会重置为False,比如输入112时,前两个1相等会把same设为True,第三个2不同却不会改变状态,导致误判。 - 单个数字处理错误:当输入单个数字(比如5)时,循环不会执行,
same保持False,错误输出NO,但单个数字显然满足条件。
修正后的代码(循环实现)
num = int(input()) # 单个自然数直接判定为符合条件 if num < 10: print("YES") else: # 提取第一个数字作为基准 first_digit = num while first_digit >= 10: first_digit = first_digit // 10 same = True temp = num while temp != 0: last_digit = temp % 10 if last_digit != first_digit: same = False break # 发现不同数字,提前终止循环 temp = temp // 10 print("YES" if same else "NO")
更简洁的字符串实现
利用字符串的特性可以大幅简化代码:
num_str = input().strip() # 检查所有字符是否与第一个字符相同 all_same = all(char == num_str[0] for char in num_str) print("YES" if all_same else "NO")
内容的提问来源于stack exchange,提问作者Notice
相关产品推荐
相关产品推荐

