Logo

郎哥编程

自行车蹬一圈能走多远?

2020-05-05 2517

1、问题的提出

同学们都骑过自行车,自行车的车轮有大的,也有小的,自行车蹬一圈能走多远呢?

有的人认为自行车蹬一圈,车轮就转一圈,蹬一圈走的路即是车轮一周的周长,你认为对吗?

这显然是不对的,因为自行车的前轮转一圈,后轮可不止转一圈。因此要求自行车蹬一圈的路程,先要求后齿轮转几圈,然后用后齿轮转数乘以车轮周长。

01.png                                   

          

2、自行车是如何向前运动的?

02.png

自行车前进的动力来自齿轮传动机构,自行车的齿轮传动机构分为前齿轮和后齿轮,两个齿轮用链条连接。

人们用脚蹬来让前齿轮转动,前齿轮通过链条带动后齿轮转动,后齿轮会带动后轮转,后轮再推动前轮转。

3、建立数学模型

蹬一圈是指人们让自行车的前齿轮转动一圈。因此要求蹬一圈自行车能走多远,就要先求出自行车的前齿轮转一圈,后齿轮能转多少圈?

前齿轮转动一圈的长度就是链条的长度,后齿轮也要转动同样的长度。由此可得出下面的等式:

03.png

那么,前齿轮转动一圈,后齿轮转动多少圈呢?

04.png

自行车蹬一圈能走多远的数学模型为:

05.png

4、编写程序求解模型

数学模型需要用户输入自行车的前齿轮数、后齿轮数和后轮半径。

06.png

程序流程图如下:

07.png

  (1)   接收用户输入的模型数据;

(2)   验证模型数据的正确性;

(3)用模型计算路程;

(4)输出路程;

(5)输出提示信息,提示信息为“输入N退出程序,其它继续”;

(6)等待用户的输入,如果用户输入N,程序结束,否则跳转到步骤(1)。

程序代码如下:

'''
程序文件:main.py
功能描述:自行车蹬一圈能走多远?
代码编写时间:2020/05/04
作者:编程训练营
'''
# 判断用户输入的是否是整数或小数
def isnumber(instr):
    # 遍历instr
    for ch in instr:
        # ch是否是数字或小数点
        if ch.isdigit() or ch == '.':
            continue;
        else:
            # instr包含其它字符
            return False
    return True
 
# 程序入口
if __name__ == '__main__':
 
    while(True):
        # 接收用户输入的前齿轮数
        front_gear = input("请输入前齿轮数(整数):")
        back_gear = input("请输入后齿轮数(整数):")
        r = input("请输入后轮半径(整数或小数):")
        # 验证用户输入数据的正确性
        if front_gear.isdigit() and back_gear.isdigit() and isnumber(r):
            # 用模型计算路程
            s = int(front_gear) / int(back_gear) * 2 * 3.14 * float(r)
            print("自行车蹬一圈走的路程为:%.2f" % (s))
        else:
             print("数据输入错误")
        # 程序继续或退出
        temp = input("输入N退出程序,其它继续:")
        # 判断temp的内容
        if temp == "N":
            break;

代码解读

代码定义了函数isnumber,用于验证用户输入自行车后轮半径数据的正确性。

主体代码要求用户分别输入自行车的前齿轮数、后齿轮数和后轮半径,并分别赋值给front_gear、back_gear和r。

然后使用if语句验证用户输入数据的正确性,在if语句中使用and逻辑运算符,对front_gear、back_gear和r的验证结果进行逻辑运算,当所有验证结果满足要求时,使用模型来计算路程。最后输出路程到Shell窗口。

08.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论