【问题标题】:Loop Table using distance = speed * time使用距离 = 速度 * 时间的循环表
【发布时间】:2018-02-01 08:32:32
【问题描述】:

车辆行驶的距离可以计算如下:

距离 = 速度 * 时间

编写一个程序,询问用户车辆的速度(以英里/小时为单位)以及行驶了多少小时。然后程序应该使用一个循环来显示该时间段内每小时车辆行驶的距离。以下是输出示例:

车辆的速度是多少英里/小时? 40

飞行了多少小时? 3

行驶的小时距离


1 : 40

2 : 80

3 : 120

到目前为止,我已经完成了所有工作,但无法使表格正常显示,如第一个小时 (1) 的示例表格所示,它应该从 40 开始,但它从 120 开始。有人可以帮我修复代码吗?忘了提到它应该适用于用户输入的任何值,例如某人在 5 小时内以 50 英里/小时的速度行驶

g = 'y'
while g == 'Y' or g == 'y':
    speed = int(input('Enter mph: '))
    time = int(input('Enter hours: '))

    if time <= 0 or speed <= 0:
        print('Invalid Hours and mph must be greater than 0')
    else:
        for t in range(time):
            distance = speed * time

            print(t + 1,':', distance)
            time = time * 2


        g = 'n'
print('End')

【问题讨论】:

  • 只需在脑海中逐步检查您的代码。它首先出错的地方在哪里?这很容易,因为它在第一次计算时就出错了!那是哪个计算?为什么错了?
  • 另一个线索,你乘以什么来得到距离?

标签: python for-loop while-loop


【解决方案1】:

只需更改程序中的两件事。 第一,for循环内不需要加倍时间,第二使用变量t代替time来计算距离。

g = 'y'
while g == 'Y' or g == 'y':
speed = int(input('Enter mph: '))
time = int(input('Enter hours: '))

if time <= 0 or speed <= 0:
    print('Invalid Hours and mph must be greater than 0')
else:
    for t in range(time):
        distance = speed * (t+1)        // Use t+1 instead of time

        print(t + 1,':', distance)
        # time = time * 2              // No need to double the time


    g = 'n'
print('End')

Input: 
40
3

Output:
(1, ':', 40)
(2, ':', 80)
(3, ':', 120)
End

【讨论】:

    【解决方案2】:

    您需要从打印行中删除逗号,并以字符串格式打印出数字并将其连接到字符串冒号,如:

            print(str(t + 1) + ':' + str(distance))
    

    您还需要将时间加一而不是乘以 2

            time = time + 1
    

    您的输出距离也可以通过基于 t 而不是时间计算来固定

            distance = speed * (t+1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 2013-07-08
      • 1970-01-01
      相关资源
      最近更新 更多