0

我很难将一组来自循环的数字写入文件中的单独行。当我想要的是来自循环每一行的数据时,我现在拥有的代码将打印 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()  
4

3 回答 3

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")
于 2013-10-04T03:03:40.813 回答
0

在您的写入循环中,您的迭代是 x。但是, x 在循环中的任何地方都没有使用。你可能想要:

        myfile.write('data:' + str(x) + str(mass_of_bike_kg) + str(velocity_in_ms) + str(coefficient_of_drafting) + str(pSec) + "\n")
于 2013-10-04T03:04:03.993 回答
0

嗯 - 您的代码中有一些小错误 -

第一次在 while 循环中打开带有“w”的文件并关闭它 - 如果您真的想将与每次迭代对应的行写入文件,这不是一个好主意。可能是 w+ 标志就可以了。但是在 for 循环内部打开和关闭又太昂贵了。

一个简单的策略是 -

打开文件运行迭代关闭文件。

正如上面在 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。您不需要显式关闭文件。这由 with 照顾。此外,建议使用上述格式选项生成字符串,而不是添加字符串。

于 2013-10-04T03:27:59.563 回答