简单的python将里程转换为千循环

时间:2017-11-10 03:11:25

标签: python loops

我需要一些帮助来设置一个简单的英里到pyo循环。我需要制作一个里程列表,通过将该列表转换为千米的循环运行它,然后打印公里列表。

我从昨天起就一直在这里,而python一直在困扰着我。我回到了我正在学习的“Zelles Python编程第三版”这本书,然后讨论了循环列表,但没有那么多转换,或者它确实如此,我只是没有看到它。

无论如何,这是我到目前为止的代码。它可能真的很高兴,但我能做些什么,而不仅仅是继续努力解决这个问题并做到正确?

无论如何,谢谢你的期待!

    def main():
        mileINk = 1.609344
        miles = [0,1,2,3,4]
        kilo = []
        for mileINk in miles:
            conV = eval(mileINk * miles)
            kilo.append(chr(conV))
        print(round(kilo, 3))

    main()

4 个答案:

答案 0 :(得分:0)

kilo = [ m * mileINk for m in miles ]
Print(kilo)

这使用列表推导将列表中的for循环压缩成一行。

更改代码后:

def main():
    mileINk = 1.609344
    miles = [0,1,2,3,4]
    kilo = [ m * mileINk for m in miles ]
    print(kilo)
main()

注意: python的最佳实践将使用像这样的魔术方法:

if __name__ == '__main__':
    mileINk = 1.609344
    miles = [0,1,2,3,4]
    kilo = [ m * mileINk for m in miles ]
    print(kilo)

答案 1 :(得分:0)

您的代码包含许多错误。这是固定的:

def main():
    mileINk = 1.609344
    miles = [0,1,2,3,4]
    kilo = []
    for mile in miles:
        conV = mile * mileINk
        conV = round(conV, 3)
        kilo.append(conV)
    print(kilo)

main()

输出[0.0, 1.609, 3.219, 4.828, 6.437]

以下是您的代码中发现的错误:

  • 您正在使用相同的变量名称 mileINk来存储1.609344for循环。这是显而易见的。

  • eval字符串作为参数; mileINk * miles会抛出错误。我认为您不需要eval

  • for循环中,您将乘以miles,而您应该将miles中的每个项目相乘。

  • chr用于返回数字的 unicode表示。你在这里显然不需要它。

  • round 数字不是列表(在您的情况下为kilo)。

你的问题可以通过更“Pythonic”的方式解决,但我保持简单,所以你不要感到困惑。

答案 2 :(得分:0)

你的语法有点不对劲。循环在python中有点不同。您不像其他语言那样制作算术序列,而是迭代每个元素;如果这是有道理的。

所以for循环是这样的:

for new_temp_variable in iterable_object:
  do stuff

所以你想要

for mile in miles:
  do computation

你不需要在乘法上做一个eval。你不应该使用chr转换为角色。你也不能围绕一个清单。

最后,我建议您阅读python教程或其他教程,因为您似乎没有牢固掌握语法

如果你使用一些新语法,你可以使用列表理解。它的语法使得这样的事情变得更容易。即。

def main():
  mileINk = 1.609344
  miles = [0, 1, 2, 3, 4]
  kilo = [mileINk * each for each in miles]
  print(kilo)

答案 3 :(得分:0)

似乎你不太清楚地理解迭代器,或其他什么。

for mileINk in miles:

在上述语句的每次迭代中,Python评估一英里到一英里的元素。因此,mileINk不再等于1.609344,但在每次迭代中等于0,1,2,3,4。 将语句更改为

for mile in miles:
    conV = mileINk * mile
    kilo.append(str(conV))

没问题。