Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 代码未检测到文件中的正确数量_File_Python 3.x_Io - Fatal编程技术网

File 代码未检测到文件中的正确数量

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

一般来说,我的代码运行良好,除了一小部分。在下面给出的文件中,程序应输出红色或硬肉的安全动物数量。应该是8点,但我得到了5点。我该如何解决这个问题?相关摘录如下。多谢各位

文本文件:

#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")