教授Python Ai会让人感到麻烦
所以我制作了一个人工智能,基本上记录了你的感受;比如说它问你做得怎么样,你说超级好,它不在“人工智能字典”里,然后它会问你这是好是坏。但是我做的检查程序有问题:教授Python Ai会让人感到麻烦,python,if-statement,text,Python,If Statement,Text,所以我制作了一个人工智能,基本上记录了你的感受;比如说它问你做得怎么样,你说超级好,它不在“人工智能字典”里,然后它会问你这是好是坏。但是我做的检查程序有问题: def pyaisetup(): open("PyAiEmotions.txt", "r+") file = open("PyAiEmotions.txt", "r+") file.writelines('This project is all about teaching an ai about learnin
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"
这让我很恼火。如果您有任何建议或任何方式来优化这一切的答复将不胜感激 这里有两个不同的问题。第一个事实是您两次使用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”。您可能需要放置一个最终的else来管理默认案例
foo = "foo"
if foo == 0:
print('first')
elif foo == 1:
print('second')
else:
print('default')
以下片段应该可以工作:
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")
file.readlines()
始终返回列表。“0”和“1”都不是列表,因此这些条件都不是真的。确定吗?然后呢?你基本上是说“猜一个介于1-1000之间的数字,但不是2”,为什么你有那些if
语句?通过打印“ok”或“wow”,您试图用它们实现什么?我是说file.readlines()=='0'
是False,file.readlines()=='1'
也是False。您应该改用file.readline()
。但是如果调用两次,第一个将读取文件内容,第二个将不读取任何内容(空行)。另外,请记住,file.readline()
并没有去掉“\n”
。我只是为了一个占位符而把文本放在那里。1和0的工作方式是,有一个文本文件,其中放置了一个默认数字0,然后程序运行,如果它检测到0,即if(file.readlines()=“0”):那么pyaisetup()将运行,并将新值设置为1,然后当程序重置时,它将看到程序已经运行,因此它不会重新运行pyaisetup(),如果'foo'==0
始终为False,那么'foo'==1
也是如此。这就是重点。这是一个示例,旨在说明您可能需要else的原因。我可以将其调整为可变比较,但教学点是相同的。在OPs案例中,他将一个值与0和1进行比较,当什么都没有发生时,他会感到惊讶。