Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的python将英里转换为公里循环_Python_Loops - Fatal编程技术网

简单的python将英里转换为公里循环

简单的python将英里转换为公里循环,python,loops,Python,Loops,我需要一些帮助来设置一个简单的mile-to-kilo python循环。我需要做一个英里列表,通过一个循环将列表转换为公里,然后打印公里列表 我从昨天开始就在做这个,python一直在我身上拉屎。我回到了我从“Zelles Python编程第三版”中学到的那本书,并讨论了循环列表,但没有太多的转换,或者它确实如此,我只是没有看到它 无论如何,这是我的代码,我到目前为止。它可能真的被顶起来了,但除了继续努力弄明白这一点并把它做好,我还能做什么呢 无论如何,谢谢你的关注 def main(

我需要一些帮助来设置一个简单的mile-to-kilo python循环。我需要做一个英里列表,通过一个循环将列表转换为公里,然后打印公里列表

我从昨天开始就在做这个,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()
这使用了一个列表理解,它将列表上的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)

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

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]

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

def main():
    mileINk = 1.609344
    miles = [0,1,2,3,4]
    kilo = [ m * mileINk for m in miles ]
    print(kilo)
main()
  • 您正在使用相同的变量名
    mileINk
    存储
    1.609344
    ,并在
    循环中存储
    。这是显而易见的

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

  • for
    循环中,您正在与
    英里相乘,而您应该与
    英里中的每个项目相乘

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

  • round
    接受一个数字,而不是一个列表(在您的情况下,
    kilo


您的问题可以用更“Pythonic”的方式解决,但我保持简单,所以您不会感到困惑。

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

所以for循环是这样的:

for new_temp_variable in iterable_object:
  do stuff
所以你想要

for mile in miles:
  do computation
你不需要对乘法进行评估。您不应该使用chr转换为字符。你也不能对列表进行取整

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

如果您对一些新语法没有异议,您可以使用列表理解。它的语法使得这样做更容易。即

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

您似乎不太清楚迭代器,或者其他一些东西

for mileINk in miles:
在上述语句的每次迭代中,Python都会以英里为单位评估一个元素。因此,mileINk不再等于1.609344,而是在每次迭代中等于0,1,2,3,4。 将语句更改为

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

可以。

是否必须这样格式化?我认为在python中有一些更简单的方法可以做到这一点。你为什么要使用
eval
?你能添加错误消息吗?你的代码正在“报废”?使用eval是因为我遇到了一些错误,我对此做了一些工作,并将更新代码。它不必像这样格式化。请记住,我是一个初学者,建议列表理解可能不会帮助一个完全的初学者。谢谢!是的,当我在书中走来走去的时候,我开始尝试很多不同的事情,结果却出现了更多的错误,这些错误也让我感到厌烦。所以eval和chr来自我,只是尝试了不同的东西,一路上我的代码被切碎了。我不太理解第二个循环?我相信这是为了让所有5个转换一起显示在输出上?这可以在同一个循环中完成吗?我想这就是我想做的。但再次感谢你的帮助!好极了!欢迎第二个循环是对结果的数字进行四舍五入,因此
1.124325
变成
1.124
,是的,这个操作最好在第一个循环内,所以我编辑了我的答案。最后,如果我的回答帮助了你,请考虑接受它…谢谢大家的时间!我在书中来回翻来覆去,结果我的代码被切碎了。但是我知道我做错了什么,并且对我应该做的事情有了更好的理解。我有几次接近目标,但仍然没有得到理想的输出。无论如何,再次感谢大家,并为之干杯!