Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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/19.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
Python 二进制数除以2和8_Python_Python 3.x - Fatal编程技术网

Python 二进制数除以2和8

Python 二进制数除以2和8,python,python-3.x,Python,Python 3.x,我需要检查一些二进制数是否可以被2或8整除,并告诉它们有多少。我现在知道,当最后一个数字为0时,二进制数可以被2整除,当最后3个数字为0时,二进制数可以被8整除,这就是我的工作方式 twos = 0 eights = 0 file = 'numbers.txt' with open(file) as fin: for line in fin: if line[-2:] == '0': twos += 1 elif line[-3:]

我需要检查一些二进制数是否可以被2或8整除,并告诉它们有多少。我现在知道,当最后一个数字为0时,二进制数可以被2整除,当最后3个数字为0时,二进制数可以被8整除,这就是我的工作方式

twos = 0
eights = 0
file = 'numbers.txt'
with open(file) as fin:
    for line in fin:
        if line[-2:] == '0':
           twos += 1
        elif line[-3:] == '000':
           eights +=1
        print(twos) 
        print(eights) 
tbh我现在不知道为什么这不起作用,我打赌这是因为不同的数据类型,但我是python新手,无法确定错误在哪里

numbers.txt的示例

  • 最后一个“数字”是
    行[-1]
    (或
    行[-1:][/code>),而不是
    行[-2:][/code>(根据相同的逻辑,
    行[-3:][/code>是最后3个“数字”,而不是最后2个)

  • 您的代码根本不尝试处理换行符

  • 由于
    elif
    ,您的算法将丢失可被2和8整除的数字


应成为:

line = line.strip()
if line[-1] == '0':
    twos += 1      
else:
    continue  # a micro optimization.
              # If it does not end with '0', obviously it can't end with '000'
if line[-3:] == '000':
    eights +=1

正如您所说,当最后一位数字为0时,二进制数字可被2整除,因此:

 line = line.strip() // The strip() method returns a copy of the string with both leading and trailing characters removed 
    if line[-1] == '0':
        twos += 1

文件='numbers.txt'
的内容是什么?您可能需要在
for
循环中执行
line=line.strip()
,因为它们可能是每行末尾的
\n
line.strip()
可能希望是
line.rstrip()
。就我个人而言,我更喜欢完整的连环漫画,但为了以防万一,我想我会给OP留下评论。@Error syntacticalreforme OP获得通缉领先空间或换行的机会非常渺茫,但这一点值得注意。
 line = line.strip() // The strip() method returns a copy of the string with both leading and trailing characters removed 
    if line[-1] == '0':
        twos += 1