编写一个函数take(),该函数返回正整数n的第k位数字。若n=543210,则take(n,0),返回数字0,take(n,4),返回数字4。从右到左,从0开始;
时间: 2023-05-02 11:01:32 浏览: 182
C语言程序设计-求一个大于10的n位整数的后n-1位的数,并作为函数值返回;
5星 · 资源好评率100%
题目中要求编写一个函数take(),该函数返回正整数n的第k位数字。若n=543210,则take(n,0)返回数字0,take(n,4)返回数字4。
函数的计数是从右往左的,即最右边数字的位置是0,往左递增,最左边数字的位置是数的位数减1。
例如,对于数543210,其各位数的位置和数值分别为:
5 4 3 2 1 0
n = 5*10^5 + 4*10^4 + 3*10^3 + 2*10^2 + 1*10^1 + 0*10^0
因此,take(n,0)就是将n取模10的结果,即n%10,取余操作可以得到一个整数除以10后的余数,即该数的最右边数字。take(n,4)就是将n除以10的4次方,再对10取模的结果,即(n//10^4)%10,先用整除操作消掉数的右边4位,再对10取模得到的就是从右数第5位的数字了。
因为题目中没有要求对于超出数n位数界限的k位置,要如何处理,因此需要在函数开始处判断k是否小于数字n的总位数,如果不是则返回-1作为错误标志。
函数的Python代码如下:
def take(n, k):
# 计算数字n的总位数
digit = 0
temp = n
while temp > 0:
temp //= 10
digit += 1
# 判断k是否超出n的总位数
if k >= digit:
return -1
# 计算第k位数字
return (n // 10**k) % 10
若有输入n=543210,可以用如下代码调用函数take(),并输出结果:
n = 543210
print(take(n, 0)) # 输出0
print(take(n, 4)) # 输出4
其中,函数take(n,0)返回数字0,函数take(n,4)返回数字4。
阅读全文