教Python仔

2024-05-23 14:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我做了一个人工智能,基本上记录了你的感受,比如说它问你怎么样,你说超级好,它不在“人工智能字典”里,然后它会问你这是好是坏。但是我的支票程序有问题:

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"

我很烦。如果您有任何建议或任何方式来优化这个所有的答复将不胜感激!你知道吗


Tags: 程序txtwritelinesopen人工智能fileaboutprint
0条回答
网友
1楼 · 发布于 2024-05-23 14:53:08

以下片段应该可以工作:

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")
网友
2楼 · 发布于 2024-05-23 14:53:08

这里有两个不同的问题。首先是你正在使用文件.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”。您可能需要放置一个最终的else来管理默认案例。你知道吗

foo = "foo"
if foo == 0:
    print('first')
elif foo == 1:
    print('second')
else:
    print('default')

相关问题 更多 >