我很难从一个循环中获取一组数字并将它们写入文件中的单独行。我现在的代码将打印5行完全相同的数据,当我想要的是来自循环的每一行的数据。我希望这是有道理的。
mass_of_rider_kg = float(input('input mass of rider in kilograms:'))
mass_of_bike_kg = float(input('input mass of bike in kilograms:'))
velocity_in_ms = float(input('input velocity in meters per second:'))
coefficient_of_drafting = float(input('input coefficient of drafting:'))
a = mass_of_rider_kg
while a < mass_of_rider_kg+20:
a = a + 4
pAir = .18*coefficient_of_drafting*(velocity_in_ms**3)
pRoll = .001*9.8*(a+mass_of_bike_kg)*velocity_in_ms
pSec = pAir+pRoll
print(pSec)
myfile=open('BikeOutput.txt','w')
for x in range(1,6):
myfile.write('data:' + str(a) + str(mass_of_bike_kg) + str(velocity_in_ms) + str(coefficient_of_drafting) + str(pSec) + "\n")
myfile.close()
答案 0 :(得分:0)
这应该这样做
with open('BikeOutput.txt','w') as myfile:
while a < mass_of_rider_kg+20:
a = a + 4
pAir = .18*coefficient_of_drafting*(velocity_in_ms**3)
pRoll = .001*9.8*(a+mass_of_bike_kg)*velocity_in_ms
pSec = pAir+pRoll
print(a, '\t', pSec)
myfile=open('BikeOutput.txt','w')
myfile.write('data:' + str(a) + str(mass_of_bike_kg) + str(velocity_in_ms) + str(coefficient_of_drafting) + str(pSec) + "\n")
答案 1 :(得分:0)
在你的写循环中,你的迭代是x。但是,x不会在循环中的任何位置使用。你可能想要:
myfile.write('data:' + str(x) + str(mass_of_bike_kg) + str(velocity_in_ms) + str(coefficient_of_drafting) + str(pSec) + "\n")
答案 2 :(得分:0)
嗯 - 代码中的一些小错误 -
首先在while循环中打开带有“w”的文件并关闭它 - 如果你真的想要将对应于每次迭代的行写入文件,那不是一个好主意。可能是w +旗会做的。但是再次打开和关闭内部循环太昂贵了。
一个简单的策略是 -
打开文件 运行迭代 关闭文件。
正如上面在InspectorG4dget的解决方案中所讨论的那样 - 你可以遵循这个 - 除了我看到的一个捕获 - 他再次在with内做一个开放(其结果未知)
这是稍好的版本 - 希望这可以满足您的需求。
mass_of_rider_kg = float(input('input mass of rider in kilograms:'))
mass_of_bike_kg = float(input('input mass of bike in kilograms:'))
velocity_in_ms = float(input('input velocity in meters per second:'))
coefficient_of_drafting = float(input('input coefficient of drafting:'))
with open('BikeOutput.txt', 'w') as myfile:
a = mass_of_rider_kg
while a < mass_of_rider_kg+20:
a = a + 4
pAir = .18*coefficient_of_drafting*(velocity_in_ms**3)
pRoll = .001*9.8*(a+mass_of_bike_kg)*velocity_in_ms
pSec = pAir+pRoll
print(pSec)
myfile.write('data: %.2f %.2f %.2f %.2f %.2f\n' % ( a, mass_of_bike_kg, velocity_in_ms,coefficient_of_drafting, pSec))
注意使用with。您不需要显式关闭该文件。这是由...照顾。此外,建议使用上面的格式化选项生成字符串,而不是添加字符串。