赫敏在一家印刷公司上班,她的一项工作就是统计一本书籍页码中包含的所有页码数字的个数(从1开始,包含结束页码)。比如,一本4页的书包含4个页码数字(1,2,3,4)。请编写一个函数,给定一个页数,求出一共出现的数字个数。
示例:
输入:4,输出:4。因为页数是1,2,3,4
输入:12,输出:15,因为1-9页共9个数字,10,11,12各有2各数字。
题目难度:简单
题目来源:codewars
def page_digits(n: int) -> int:
pass
assert page_digits(4) == 4
assert page_digits(12) == 15
assert page_digits(100) == 192
def page_digits(n):
sum_digits = 0
for num in range(1,n+1):
sum_digits +=len(str(num))
return sum_digits
assert page_digits(4) == 4
assert page_digits(12) == 15
assert page_digits(100) == 192
1 个赞
nobugs
3
def page_digits(n: int) -> int:
return sum([len(str(i)) for i in range(1, n + 1)])
assert page_digits(4) == 4
assert page_digits(12) == 15
assert page_digits(100) == 192
def page_digits(n: int) -> int:
# 定义不同位数9的列表
sizeTable = [9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, 9999999999]
# 获取数字位数的方法
def sizeOfInt(x: int):
for i in range(len(sizeTable)):
if x <= sizeTable[i]:
return i+1
# 获取传入数字的位数
size = sizeOfInt(n)
# 定义返回值
result = None
# 循环判断位数是否大于0
while size > 0:
if result is None:
# 如果返回值未赋值,则进行首次赋值
result = n * size
else:
# 返回值减去列表对应位数的9
result = result - sizeTable[size-1]
# 位数 -1
size = size - 1
return result
assert page_digits(4) == 4
assert page_digits(12) == 15
assert page_digits(100) == 192
assert page_digits(12345) == 50619
assert page_digits(12345678) == 87654321
assert page_digits(123456789) == 999999999
dong
(冬冬冬)
5
def page_digits(n: int) -> int:
count = 0
while True:
# 获取当前共有多少位数字
length = len(str(n))
if length == 1:
# 仅剩个位数时,直接加上并返回
count += n
return count
surplus_num = int((length-1) * '9')
# 减去比当前位数少一位的最大值, 即当前长度的数字有多少个
now_num = n - surplus_num
count += now_num * length
# 将剩下的数字赋值给n 再次进行处理 直到仅剩一位数
n = surplus_num
assert page_digits(4) == 4
assert page_digits(100) == 192
assert page_digits(999999999) == 8888888889
1 个赞
def page_digits(n: int) -> int:
return len(''.join([str(i) for i in range(1,n+1)]))
assert page_digits(4) == 4
assert page_digits(12) == 15
assert page_digits(100) == 192
Sun
(逆风微笑的测试狗)
7
def page_digits(n: int) -> int:
list = []
for i in range(1, n + 1):
list.append(len(str(i)))
return sum(list)
assert page_digits(4) == 4
assert page_digits(12) == 15
assert page_digits(100) == 192
def page_digits(n: int) -> int:
x = 0
for i in range(1, n + 1):
s = len(str(i))
x += s
return x
def page_digits(n: int) -> int:
return sum([len(str(i)) for i in range(1, n + 1)])
assert page_digits(4) == 4
assert page_digits(12) == 15
assert page_digits(100) == 192
abyss
(abyss)
11
def solution(num: int):
count = 0
for i in range(1, num + 1):
count += len(str(i))
return count
assert solution(4) == 4
assert solution(12) == 15