yu123py
发表于 2019-4-30 21:53:50
def faulty_odometer(i):
c = 0
j = 1
while j <= i:
if '4' in str(j):
jump = 10 ** (len(str(j)) - str(j).index('4') - 1)
c += jump
j += jump
j += 1
return i - c
永恒的蓝色梦想
发表于 2019-8-20 12:05:33
不明白怎么跳过的
panheng
发表于 2019-8-24 23:28:40
# 解题思路,按照规则生成一个字典(显示值:真实值),通过显示值索引出真实值。假设真实车速在1-400公里之间
dict1 = {}
trans = 1
for i in range(1,401):
if trans % 10 == 4:
trans += 1
if (trans // 10) % 10 == 4:
trans += 10
if ((trans // 10) //10 ) %10 == 4:
trans += 100
dict1 = i
trans += 1
# print(dict1.keys())
print(dict1['13'])
print(dict1['15'])
print(dict1['55'])
克里斯保罗
发表于 2019-9-7 20:04:26
为什么直接转换成九进制就可以了啊
pan_back
发表于 2019-9-10 20:24:44
Num=input('请输入数字:\n')
Num=list(reversed())
Sum=sum(*9**i for i in range(len(Num)) ])
print(Sum)
嘿嘿嘿的黑子哥
发表于 2020-2-28 16:04:04
def foo(number):
count = 0
actual_Mile = 0
for i in range(1,number+1):
if "4" in str(i):
count += 1
actual_Mile = number - count
print(actual_Mile)
杜若左
发表于 2020-4-4 20:43:02
j = int(input("请输入计程表上面的数字:"))
r = j
n = 0
for i in range(1,j+1):
while i :
k = i % 10
if k == 4:
n +=1
i = i / 10
print("实际数字为"+str(r-n))
杜若左
发表于 2020-4-4 21:10:04
j = int(input("请输入计程表上面的数字:"))
r = j
n = 0
for i in range(1,j+1):
while i :
k = i % 10
if k == 4:
n +=1
i = int(i / 10)
print(i)
print("实际数字为"+str(r-n))
杜若左
发表于 2020-4-4 21:29:50
大佬 看了你的代码 你的方法不仅仅是巧妙简直是伟大呀
holiday_python
发表于 2020-4-22 13:34:36
d
你先你先上
发表于 2020-4-27 16:50:35
6666
19971023
发表于 2020-6-11 18:25:52
1
junsitu9159
发表于 2020-6-12 07:51:36
不会
nononoyes
发表于 2020-6-15 15:24:53
'''
有一个车的里程表是以整数方式显示的,但是有个毛病,每到4时会直接跳至5,例如3后面本应该显示4,但是直接显示为5。
那么当显示为13公里的时候,实际上是12公里。(因为4被跳了。)
而当显示为15公里的时候,实际上是13公里。(因为4和14被跳了。)
现在请给出一个函数,当输入显示公里数时,返回实际公里数。
'''
'''
'''
def assert_equals(func,target):
if func == target:
print("Success!")
else:
print('Fail! {0} not equals {1}'.format(func, target))
def faulty_odometer(num):
num1 = num
list = []
while num%10>=0 and num !=0:
list.append(num%10)
num = num//10
# 按照从高位到地位的方式千百十个位的顺序存储
list.reverse()
len1 = len(list)-1
for i in list:
temp = 10**len1
k = num1 // temp
n = k // 10
if k % 10 > 4:
n = n + 1
num1 = num1 - n*temp
len1 = len1-1
return num1
assert_equals(faulty_odometer(13),12)
assert_equals(faulty_odometer(15),13)
assert_equals(faulty_odometer(55),40)
assert_equals(faulty_odometer(2005),1462)
assert_equals(faulty_odometer(1500),1053)
assert_equals(faulty_odometer(999999),531440)
assert_equals(faulty_odometer(165826622),69517865)
小陨aoq
发表于 2020-7-27 17:06:24
学习一下
wwwwwise
发表于 2021-3-29 15:20:00
1
hgs731
发表于 2021-3-29 16:00:19
看评论,又学到了...