Python 我想写一个代码,可以接受两个数字,并在这些数字之间按降序创建一个txt文件

Python 我想写一个代码,可以接受两个数字,并在这些数字之间按降序创建一个txt文件,python,Python,这是密码 import os myfile = ('filename.txt' ,'wb') a = int(input('integer a: ')) b = int(input('integer b: ')) def cal(a,b): while a>b: a = a-1 print a c = str(cal(a,b)) print c myfile.writelines(c) 我只收到文件中最后一个字。请有人帮帮我。即使您在ca

这是密码

import os
myfile  = ('filename.txt' ,'wb')

a = int(input('integer a: '))
b = int(input('integer b: '))

def cal(a,b):
    while a>b:
        a = a-1
        print a

c = str(cal(a,b))
print c

myfile.writelines(c)

我只收到文件中最后一个字。请有人帮帮我。

即使您在cal函数结束时返回a,您也只会得到一个正在写入的数字。通过使用一个范围并将其转换为一个列表,然后将该列表与一个空格连接起来,可以更轻松地完成整个任务

import os
smallNum= int(input('smaller integer a: '))
bigNum= int(input('bigger integer b: '))

with open('filename.txt' ,'w') as myFile:
    myFile.write(" ".join([str(x) for x in list(range(smallNum+1,bigNum))]))
 " ".join([str(x) for x in list(range(bigNum+1,smallNum))])
这行代码创建了两个NUM之间的所有数字范围:

range(bigNum+1,smallNum)
然后转换为(整数的)列表

然后将其转换为具有列表理解的字符串列表

 [str(x) for x in list(range(bigNum+1,smallNum))]
最后用空格连接列表中的每个项目

import os
smallNum= int(input('smaller integer a: '))
bigNum= int(input('bigger integer b: '))

with open('filename.txt' ,'w') as myFile:
    myFile.write(" ".join([str(x) for x in list(range(smallNum+1,bigNum))]))
 " ".join([str(x) for x in list(range(bigNum+1,smallNum))])
不使用列表理解/.join/context管理器的解决方案
您不会从
cal
函数返回任何内容。在cal()的最后一行添加
返回一个
。原始问题看起来非常像一个由大学教师/教授为初学者编写的虚构的不现实问题。我的猜测是,教授肯定不喜欢你的意见书(即使它是正确的,而且可能是最好的答案)-他们不喜欢,因为a)这不是课程所涵盖的任何内容(列出理解、上下文管理等),教授自己可能都不明白。@TonySuffolk66好的,我已经编辑了这个问题,加入了一个更简单的方法。为了好玩,我对两者进行了基准测试,对于数字10-999999,第一个解决方案需要0.3秒,另一个需要1.8秒!可能是所有的字符串连接。我的文件最终是6.57MB的toothanks文件在将任何内容写入文件之前,我花了很长时间才弄清楚循环是否已结束。@Racialz-看起来不错-以一种可怕的基本的、第一类的方式。希望教授能很快解释正确的做事方法。我想知道,如果每次循环都写入文件(而不是字符串concats)是否会更快,那么对象创建似乎很慢。实际上,我是在自学。所以事情很混乱。所以你能用你所说的“正确的方法”来指导我吗。