教Python Ai Ai Feelings麻烦

时间:2017-01-07 00:14:09

标签: python if-statement text

所以我制作的人工智能基本上记录了你的感受;比如说它问你怎么做,你说超级好,它不在" 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"

这让我烦恼。如果您有任何建议或任何方式来优化这一点,将非常感谢所有回复!

2 个答案:

答案 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")