我需要一些帮助来设置一个简单的英里到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()
答案 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.609344
和for
循环。这是显而易见的。
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))
没问题。