所以我制作的人工智能基本上记录了你的感受;比如说它问你怎么做,你说超级好,它不在" ai的字典"那么它会问你这是好还是坏或坏。但我在制作检查程序方面遇到了麻烦:
def pyaisetup():
open("PyAiEmotions.txt", "r+")
file = open("PyAiEmotions.txt", "r+")
file.writelines('This project is all about teaching an ai about learning emotions\n')
open("PyAiGoodEmotions.txt", "r+")
file = open("PyAiGoodEmotions.txt", "r+")
file.writelines('Good Emotions:\n')
open("PyAiNeutralEmotions.txt", "r+")
file = open("PyAiNeutralEmotions.txt", "r+")
file.writelines('Neutral Emotions:\n')
open("PyAiBadEmotions.txt", "r+")
file = open("PyAiBadEmotions.txt", "r+")
file.writelines('Bad Emotions:\n')
open("PyAiWriteCheck.txt", "r+")
file = open("PyAiWriteCheck.txt", "r+")
if (file.readlines() == '0'):
print "ok"
elif (file.readlines() == '1'):
print "wow"
所以程序会写一个1或者0,这取决于程序之前是否运行但我的程序刚完全跳过:
if (file.readlines() == '0'):
print "ok"
elif (file.readlines() == '1'):
print "wow"
这让我烦恼。如果您有任何建议或任何方式来优化这一点,将非常感谢所有回复!
答案 0 :(得分:0)
这里有两个不同的问题。第一个是你使用file.readlines()两次,第二个是你有两个检查的条件,但有些情况会漏掉。
如果我有一个文件abc.txt
有三行,0,1,2那么我就会出现这种行为
In [1]: file = open('abc.txt', 'r+')
In [2]: first_lines = file.readlines()
In [3]: first_lines
Out[3]: ['0\n', '1\n', '2']
In [4]: second_lines = file.readlines()
In [5]: second_lines
Out[5]: []
相反,你应该将数据拉出一个单独的变量并使用它。
In [1]: with open('abc.txt', 'r+') as f:
...: lines = f.readlines()
...:
In [2]: lines
Out[2]: ['0\n', '1\n', '2']
然后你可以对此进行检查(注意,你可能需要删除你正在做的\n
字符。)
其次,你的if / elif块只会返回一些东西,如果它检查的是0或1,而不是它,例如,' foo'。您可能希望使用最后一个来管理默认情况。
foo = "foo"
if foo == 0:
print('first')
elif foo == 1:
print('second')
else:
print('default')
答案 1 :(得分:0)
以下片段应该有效:
content = file.readline().strip()
if content == '0':
print("ok")
elif content == '1':
print("wow")
else:
print("error")
但是,您可以仅使用文件的存在与否来指示程序是否在之前运行。函数os.path.isfile("PyAiWriteCheck.txt")
检查文件是否存在。
最后,您可以使用异常处理:
try:
open("PyAiWriteCheck.txt", "r")
print("ok")
except:
print("wow")