简单的python将英里转换为公里循环
我需要一些帮助来设置一个简单的mile-to-kilo python循环。我需要做一个英里列表,通过一个循环将列表转换为公里,然后打印公里列表 我从昨天开始就在做这个,python一直在我身上拉屎。我回到了我从“Zelles Python编程第三版”中学到的那本书,并讨论了循环列表,但没有太多的转换,或者它确实如此,我只是没有看到它 无论如何,这是我的代码,我到目前为止。它可能真的被顶起来了,但除了继续努力弄明白这一点并把它做好,我还能做什么呢 无论如何,谢谢你的关注简单的python将英里转换为公里循环,python,loops,Python,Loops,我需要一些帮助来设置一个简单的mile-to-kilo python循环。我需要做一个英里列表,通过一个循环将列表转换为公里,然后打印公里列表 我从昨天开始就在做这个,python一直在我身上拉屎。我回到了我从“Zelles Python编程第三版”中学到的那本书,并讨论了循环列表,但没有太多的转换,或者它确实如此,我只是没有看到它 无论如何,这是我的代码,我到目前为止。它可能真的被顶起来了,但除了继续努力弄明白这一点并把它做好,我还能做什么呢 无论如何,谢谢你的关注 def main(
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
英里相乘,而您应该与
英里中的每个项目相乘
用于返回数字的unicode表示形式。你在这里不需要它chr
接受一个数字,而不是一个列表(在您的情况下,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
,是的,这个操作最好在第一个循环内,所以我编辑了我的答案。最后,如果我的回答帮助了你,请考虑接受它…谢谢大家的时间!我在书中来回翻来覆去,结果我的代码被切碎了。但是我知道我做错了什么,并且对我应该做的事情有了更好的理解。我有几次接近目标,但仍然没有得到理想的输出。无论如何,再次感谢大家,并为之干杯!