File 代码未检测到文件中的正确数量
一般来说,我的代码运行良好,除了一小部分。在下面给出的文件中,程序应输出红色或硬肉的安全动物数量。应该是8点,但我得到了5点。我该如何解决这个问题?相关摘录如下。多谢各位 文本文件:File 代码未检测到文件中的正确数量,file,python-3.x,io,File,Python 3.x,Io,一般来说,我的代码运行良好,除了一小部分。在下面给出的文件中,程序应输出红色或硬肉的安全动物数量。应该是8点,但我得到了5点。我该如何解决这个问题?相关摘录如下。多谢各位 文本文件: #color size flesh class brown large hard safe green large hard safe red large soft dangerous green large
#color size flesh class
brown large hard safe
green large hard safe
red large soft dangerous
green large soft safe
red small hard safe
red small hard safe
brown small hard safe
green small soft dangerous
green small hard dangerous
red large hard safe
brown large soft safe
green small soft dangerous
red small soft safe
red large hard dangerous
red small hard safe
green small hard dangerous
以及守则:
for line in infile:
if line[0] != '#':
data = line.strip().split()
if data:
animals = animals + 1
if data[3] == 'dangerous':
dangerous = dangerous + 1
elif data[3] == 'safe' and data[1] == 'large':
large_safe = large_safe + 1
elif data[0] == 'brown' and data[3] == 'dangerous':
brown_dangerous = brown_dangerous + 1
elif (data[3] == 'safe') and (data[0] == 'red' or data[2] == 'hard'):
safe_red_hard = safe_red_hard + 1
print("Total animals: "+ animals + "\n")
print("Dangerous: "+ dangerous + "\n")
print("Brown and dangerous: "+ brown_dangerous + "\n")
print("Large and safe: "+ large_safe + "\n")
print("Safe and red color or hard flesh: "+ safe_red_hard + "\n")
主要问题在于
elif
语句:
elif data[3] == 'safe' and data[1] == 'large':
large_safe = large_safe + 1
elif data[0] == 'brown' and data[3] == 'dangerous':
brown_dangerous = brown_dangerous + 1
elif (data[3] == 'safe') and (data[0] == 'red' or data[2] == 'hard'):
按照这种逻辑,任何体型大而安全的动物都不能算作是安全的、红色的或坚硬的。解决方案是使用if
语句:
animals = 0
large_safe = 0
dangerous = 0
brown_dangerous = 0
safe_red_hard = 0
with open('file') as infile:
for line in infile:
if line[0] == '#':
continue
data = line.strip().split()
if data:
animals = animals + 1
if data[3] == 'dangerous':
dangerous = dangerous + 1
if data[3] == 'safe' and data[1] == 'large':
large_safe = large_safe + 1
if data[0] == 'brown' and data[3] == 'dangerous':
brown_dangerous = brown_dangerous + 1________________________
if (data[3] == 'safe') and (data[0] == 'red' or data[2] == 'hard'):
safe_red_hard = safe_red_hard + 1
print("Total animals: "+ str(animals) +"\n")
print("Dangerous: "+ str(dangerous) +"\n")
print("Brown and dangerous: "+ str(brown_dangerous) + "\n")
print("Large and safe: "+ str(large_safe) + "\n")
print("Safe and red color or hard flesh: "+ str(safe_red_hard) + "\n")