负整数首位数字提取:Python代码调试求助(不使用isdigit())
问题分析与解决
你的代码处理负数时出错,核心原因是:当输入负整数时,b[:2]会把负号和第一位数字一起转换成负整数,违背了题目中“符号请勿计入”的要求,导致计算结果错误。
解决思路(不使用isdigit())
我们只需要跳过负号,提取数字部分的首位即可,有两种简洁的实现方式:
方法1:通过判断正负提取对应索引
直接判断数字的正负,正数取字符串第0位,负数取第1位(跳过负号):
num = int(input()) num_str = str(num) # 提取首位数字 first_digit = int(num_str[1]) if num < 0 else int(num_str[0]) # 提取末位数字 last_digit = int(num_str[-1]) print(first_digit + last_digit)
方法2:利用绝对值统一处理
将数字转为绝对值后再转字符串,这样无论正负都能得到无符号的数字字符串,直接提取首尾即可:
num = int(input()) abs_num_str = str(abs(num)) first_digit = int(abs_num_str[0]) last_digit = int(abs_num_str[-1]) print(first_digit + last_digit)
验证示例
- 输入
-1234:首位数字是1,末位是4,输出5 - 输入
9876:首位数字是9,末位是6,输出15 - 输入
-4321:首位数字是4,末位是1,输出5
这两种方法都完全符合题目要求,且不需要使用isdigit()函数。
内容的提问来源于stack exchange,提问作者MANO M
相关产品推荐
相关产品推荐

