file.write没有输出

时间:2019-10-06 18:49:06

标签: python python-3.x

我运行以下程序,希望将输出保存为.txt文件。

我已经在python 3.6的spyder IDE中运行了此代码。

temperatures = [10,-20,-289,100]

file = open('temperature.txt','w')

def f_to_c(temperatures):
    for celsius in temperatures:
        if  celsius >  -273.15:
            fahrenheit = celsius * (9/5) + 32
            file.write(str(fahrenheit))

f_to_c(temperatures)

此代码中没有没有错误消息,但是我没有在.txt文件中得到输出。你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

更新的功能和说明:

def f_to_c(file: str, temps: list):
    with open(file, 'a', newline='\n') as f:
        for temp in temps:
            if  temp >  -273.15:
                fahrenheit = temp * (9/5) + 32
                f.write(f'{fahrenheit}\n')


temps = [10,-20,-289,100]
f_to_c('temperature.txt', temps)

或者:

  • 具有用于转换温度的专用功能。
    • 这是处理任务的适当方法。
    • 函数应该做一件事。
  • 分别处理文件
def f_to_c(temps: list) -> list:
    return [temp * (9/5) + 32 for temp in temps if temp > -273.15]


temps = [10,-20,-289,100]
with open('temperature.txt', 'a', newline='\n') as f:
    for value in f_to_c(temps):
        f.write(f'{value}\n')

答案 1 :(得分:0)

以下更清洁的方法

def f_to_c(temperatures):
    fahrenheit_results = []
    for celsius in temperatures:
        if celsius > -273.15:
            fahrenheit_results.append(celsius * (9 / 5) + 32)
    return fahrenheit_results


results = f_to_c([10, -20, -289, 100])
with open('out.txt','w') as out:
    for r in results:
        out.write(str(r) + '\n')