我正在尝试创建一个创建.txt或.dat文件的程序(取决于用户选择),然后在该文件中写入一个随机值,然后将其转换为另一个值。
所以如果给出一个随机字符,则应将其转换为相应的ASCII值,反之亦然。
目前这就是我所拥有的:
import random # import randomdeals with random generation
import string # import string contains sequences of common ASCII characters
userInput = input("Which file would you like to open either a .txt file or a .dat file?") # let the user decide which file type they want to open
def randomCharacter():
return random.choice(string.ascii_letters)
def randomASCII():
return random.randint(97,122)
if userInput == (".txt"):
with open("characterConversion.txt", "w") as textFile:
textFile.write(randomCharacter())
textFile.close()
textFile = open("characterConversion.txt", "r+")
character = textFile.readline(1)
textFile.write("\n converted into its ASCII value is \n") #/n means a new line
textFile.write(str(ord(character)))
textFile.close()
if userInput == (".dat"):
with open("asciiConversion.dat", "w") as datFile:
datFile.write(str(randomASCII()))
datFile.close()
datFile = open("asciiConversion.dat", "r+")
ascii = int(datFile.readline(1))
character = chr(randomASCII())
datFile.write(str(ascii))
datFile.write("\n in its character form is \n")
datFile.write(character)
datFile.close()
我的.txt部分程序非常有用,感谢之前帮助我修复它的用户,但我现在遇到了我的.dat文件问题。输入我的输入为.dat并打开文件后,它显示: 1061 它的性格形式是 一个
然而,数字(在这种情况下是1061)应该只在97到122之间,所以我不知道我哪里出错了。如果我没有清楚地解释我的问题,我会道歉
答案 0 :(得分:1)
执行str(randomCharacter)
您将名为randomCharacter
的函数转换为字符串,但您不会将其调用。
在Python中,即使没有任何参数可以传递,也必须加上括号,或者它具有不同的含义。
即使你调用它,你也会再次返回函数引用而不是结果(看起来像使用VB扭曲你的python代码)。
def randomCharacter():
return random.choice(string.ascii_letters)
然后使用with
上下文块来确保文件已关闭/刷新:
if userInput == ".txt":
with open("characterConversion.txt", "w") as textFile:
textFile.write(randomCharacter())
答案 1 :(得分:0)
您需要在写完后关闭打开的文件
textFile.write(str(randomCharacter()))
textFile.close()
答案 2 :(得分:0)
您不是在randomCharacter
函数中保存您刚刚创建的随机字符。除此之外,您将返回函数本身,而不是此随机创建的字符。
这样可行:
userInput = input("Which file would you like to open either a .txt file or a .dat file? ")
def randomCharacter():
random_character = random.choice(string.ascii_letters)
return random_character
if userInput == ".txt":
with open("characterConversion.txt", "w") as f:
f.write(randomCharacter())
此外,您不需要在此处使用str
函数,因为randomCharacter返回的值已经是字符串。
答案 3 :(得分:0)
我需要做的是删除第二个datFile.write,因为我正在编写2个不同的ASCII值,因为程序正在交替转换哪个值