技术问询:读取数字后,求删除末位与倒数第二位后两数的乘积
解决数字提取与乘积计算问题
问题核心
你需要实现的是:读取数字后,分别生成删除最后一位和删除倒数第二位的两个新数字,再计算它们的乘积。比如输入4358,要得到435(删最后一位)和438(删倒数第二位),最终乘积为190530。
两种可行解决方案
方案1:字符串切片法(直观不易出错)
利用字符串的切片操作可以轻松定位并修改数字的某一位,适合大多数场景:
# 读取输入(可直接读字符串,或转成字符串) input_num = input("输入数字:") num_str = str(input_num) # 生成删除最后一位的数字 num_remove_last = int(num_str[:-1]) # 生成删除倒数第二位的数字:取前n-2位 + 最后一位字符 num_remove_second_last = int(num_str[:-2] + num_str[-1]) # 计算乘积 result = num_remove_last * num_remove_second_last print(result)
- 示例运行:输入
4358时,num_str[:-1]是"435",num_str[:-2]+num_str[-1]是"43"+"8"即"438",相乘后得到190530。
方案2:纯数学运算(无需字符串转换)
通过取整和取余操作拆分数字,适合对数字操作更熟悉的场景:
input_num = int(input("输入数字:")) # 删除最后一位:整除10即可 num_remove_last = input_num // 10 # 提取最后一位数字 last_digit = input_num % 10 # 提取去掉最后两位的高位部分 high_part = input_num // 100 # 删除倒数第二位:高位*10 + 最后一位 num_remove_second_last = high_part * 10 + last_digit # 计算乘积 result = num_remove_last * num_remove_second_last print(result)
- 示例运行:输入
4358时,input_num//10=435,last_digit=8,high_part=43,num_remove_second_last=43*10+8=438,乘积正确。
你可能踩的坑
- 错误地将“删除倒数第二位”理解为
input_num//100(这样得到的是43,而非438),这是最常见的失误。 - 处理位数较少的数字时(比如3位数,输入
123),两种方案依然有效:删最后一位得12,删倒数第二位得13,乘积156。
内容的提问来源于stack exchange,提问作者Maitree Oza
相关产品推荐
相关产品推荐

