python算法:求车速
一,for循环:
1,功能:重复执行同一段代码
语法:
for index in range(n):
# 循环体代码
index : 用来依次接收可迭代对象中的元素的变量名
range()函数:负责返回整数序列
流程图:
2,应用
range可以同时指定start 和stop,用for遍历并打印
1
2
3
4
|
# 指定 start和stop # print的参数 end=" " 用来使打印不换行 for num in range ( 3 , 9 ): print (num, end = " " ) |
运行结果:
3 4 5 6 7 8
说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/28/python-suan-fa-qiu-che-su/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,求车速的题目与解析
1,题目:
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数,该数仍为5位数。
问该车的速度是多少?新的对称数是多少?
2,解析:
司机在上午10点看到里程表上的读数是一个对称数95859,两小时后里程表上出现的新的对称数必然大于95859。
所以,假设所求对称数为i,并设其初值为95860,即从95860开始检测,使i的取值依次递增。因为新对称数是5位数,所以最大循环到99999
如何得到各位上的数字?
一种方法是转为字符串,
另一种方法是用整除//加上取余%操作
三,编写代码
1,整数转字符串得到各位上数字
1
2
3
4
5
6
7
|
# i为里程数初始值,因最后结果仍是5位数,故最大值为100000 for i in range ( 95860 , 100000 ): a = str (i) if a[ 0 ] = = a[ 4 ] and a[ 1 ] = = a[ 3 ]: print (f "里程表上出现的新的对称数为:{a[0]}{a[1]}{a[2]}{a[3]}{a[4]}" ) print ( "该车的速度为:%.2f" % ((i - 95859 ) / 2.0 )) break |
运行结果:
里程表上出现的新的对称数为:95959
该车的速度为:50.00
2, 整数通过//和%运算得到各位上数字:
1
2
3
4
5
6
7
8
9
10
11
12
|
# i为里程数初始值,因最后结果仍是5位数,故最大值为99999 for i in range ( 95860 , 100000 ): # 分别得到各位上的数字 units = i % 10 # 个位 ten = (i / / 10 ) % 10 # 十位 hundred = (i / / 100 ) % 10 # 百位 thousand = (i / / 1000 ) % 10 # 千位 ten_thousand = i / / 10000 # 万位 if units = = ten_thousand and ten = = thousand: # 是否对称 print (f "新对称数为:{ten_thousand}{thousand}{hundred}{ten}{units}" ) print ( "该车的速度为:%.2f" % ((i - 95859 ) / 2.0 )) break |
运行结果:
新对称数为:95959
该车的速度为:50.00