我想编写一个代码,可以采用两个数字,并按递减顺序在这些数字之间创建一个txt文件

时间:2016-05-17 12:26:15

标签: 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)

我只能在文件中写下最后一句话。请有人帮助我。

1 个答案:

答案 0 :(得分:0)

即使你在cal函数结束时返回了一个,你也只能写一个数字。通过使用范围并将其转换为列表,然后使用空格加入该列表,您可以更轻松地完成整个事情

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))]))

这行代码创建了两个nums之间所有数字的范围:

range(bigNum+1,smallNum)

然后转换为列表(整数)

list(range(bigNum+1,smallNum))

然后将其转换为具有列表推导的字符串列表

 [str(x) for x in list(range(bigNum+1,smallNum))]

最后使用空格

连接列表中的每个项目
 " ".join([str(x) for x in list(range(bigNum+1,smallNum))])

不使用列表推导/ .join /上下文管理器

的解决方案
import os
smallNum = int(input('smaller integer a: '))
bigNum = int(input('bigger integer b: '))

writeString = "" #string to write to file later

for currentNum in range(smallNum+1, bigNum): #non-inclusive range of numbers
    strNum = str(currentNum) #convert to string
    writeString += strNum + " " #add the number and a space to the string

file = open("filename.txt", "w")
file.write(writeString)
file.close()