输入一个整数,求该整数上的各位数是否包含数字5,若有,则按从低到高的顺序输出第几位,若没有,则输出-1。
时间: 2023-08-31 15:42:34 浏览: 125
python 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字 (示例)
5星 · 资源好评率100%
### 回答1:
好的,这是一个算法问题,我可以为您解答。
您输入的整数为n,我们可以将n逐位取余得到各个数位上的数字,再判断是否包含数字5即可。代码如下:
```
n = int(input())
res = []
for i in range(len(str(n))):
if n % 10 == 5:
res.append(i+1)
n = n // 10
if res:
print(*res)
else:
print(-1)
```
代码解释:
1. 首先将输入的整数n转为字符串,通过len(str(n))得到数字n的位数,然后依次取余得到各个数位上的数字。
2. 如果当前数位上的数字是5,则记录该数位位置,即i+1,并添加到结果列表res中。
3. 每次取余后,将n更新为去掉最低位的数,即n // 10,这样可以一位一位地处理数字n。
4. 最后判断res是否为空,如果不为空,则输出列表中的数字;否则输出-1。
希望能够帮助到您!
### 回答2:
可以依次取整数的个位、十位、百位、千位以及更高位上的数字,然后判断是否包含数字5。若包含数字5,输出该位所在的位置;若没有包含数字5,继续向高位移动,直到所有位上的数字都判断完毕。若所有位都不包含数字5,则输出-1。下面是一个示例代码实现:
```python
def check_digits(num):
digit = 1
while num > 0:
if num % 10 == 5:
return digit
num //= 10
digit += 1
return -1
num = int(input("请输入一个整数:"))
result = check_digits(num)
print("该整数上的各位数是否包含数字5:")
if result == -1:
print(-1)
else:
print("第", result, "位")
```
通过以上代码,我们可以判断输入的整数上的各位数是否包含数字5,并按照从低到高的顺序输出第几位。如果没有包含数字5,则输出-1。
### 回答3:
首先,我们可以通过对整数取余数和整数除法的操作,逐位提取出该整数的各个数字。然后,判断提取的数字是否等于5,如果等于5,则输出当前位的位置,如果不等于5,则继续提取下一位数字。如果遍历完所有位数后都没有遇到数字5,则输出-1。
下面是一个示例代码实现:
```python
def check_digits(n):
position = 1 # 记录当前位的位置,从低到高逐渐增加
while n > 0:
digit = n % 10 # 取得当前位的数字
if digit == 5:
return position
n //= 10 # 去掉已经判断过的最低位
position += 1
return -1 # 遍历完所有位数,没有找到数字5
# 测试样例
num = int(input("请输入一个整数:"))
result = check_digits(num)
print("该整数上的各位数是否包含数字5:", result)
```
例如,输入整数2537,输出结果为3,表示数字5位于第三位上;输入整数4089,输出结果为-1,表示该整数上没有数字5。
阅读全文