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
posted @ 2024-05-16 11:24  刘宏缔的架构森林  阅读(60)  评论(0编辑  收藏  举报