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位数,故最大值为100000for 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位数,故最大值为99999for 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
                    
                
                
            
        
浙公网安备 33010602011771号