编程语言
首页 > 编程语言> > 华为od题 第81题 --python

华为od题 第81题 --python

作者:互联网

'''
程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。
出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。
比如:
1. 23再多一块钱就变为25;
2. 39再多一块钱变为50;
3. 399再多一块钱变为500;
小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。
给出计费表的表面读数,返回实际产生的费用。

输入描述:
只有一行,数字N,表示里程表的读数。
(1<=N<=888888888)。
输出描述:
一个数字,表示实际产生的费用。以回车结束。
示例1:
输入
5
输出
4
说明
5表示计费表的表面读数。
表示实际产生的费用其实只有4块钱。

示例2:
输入
17
输出
15
说明
17表示计费表的表面读数。
15表示实际产生的费用其实只有15块钱。
示例3:
输入
100
输出
81
说明:100表示计费表的表面读数,81表示实际产生的费用其实只有81块钱
'''
n = int(input())
i =1
cs =0
num_list = []
while i <=100:
if '4' not in str(i):
num_list.append(str(i))
else:
# 把数值里面的4替换成5,再给i赋值为新替换的数
old_str = str(i)
new_str = old_str.replace('4','5')
num_list.append(new_str)
i = eval(new_str)

i =i+1
new_num_list = [int(x) for x in num_list]
#求差数和
for i in range(len(new_num_list)-1):
if new_num_list[i+1] - new_num_list[i] != 1:
cs += new_num_list[i+1] - new_num_list[i]-1

print(n-cs)
##### 这个题目不难,找出规律一顿操作就写出来了

标签:读数,--,od,list,python,num,str,计费,new
来源: https://www.cnblogs.com/xycbq/p/16192469.html