Python练习接受一个4位数的bin编号,并将其放入一个可被5整除的列表中。

Python练习接受一个4位数的bin编号,并将其放入一个可被5整除的列表中。,python,Python,我有以下练习: “编写一个Python程序,接受逗号分隔的4位二进制数字序列作为输入,并以逗号分隔的序列打印可被5整除的数字。” 但是我不知道怎么做。 非常感谢您的帮助。我想您应该再考虑一下确切的问题: “接受逗号分隔的4位二进制数序列”: 我认为这个想法是用户可以输入类似“010111110011”的内容。您的代码中没有解决这个问题 “二进制数”:根据我的理解,这个想法是将二进制数转换成整数,然后检查它们的可分性。到目前为止,您还没有转换它们,只是将输入解释为int 因此,一种方法是:

我有以下练习: “编写一个Python程序,接受逗号分隔的4位二进制数字序列作为输入,并以逗号分隔的序列打印可被5整除的数字。” 但是我不知道怎么做。
非常感谢您的帮助。

我想您应该再考虑一下确切的问题:

  • “接受逗号分隔的4位二进制数序列”: 我认为这个想法是用户可以输入类似“010111110011”的内容。您的代码中没有解决这个问题
  • “二进制数”:根据我的理解,这个想法是将二进制数转换成整数,然后检查它们的可分性。到目前为止,您还没有转换它们,只是将输入解释为int
因此,一种方法是:

  • 将逗号分隔的字符串解析为二进制(!)数字列表
  • 转换为int并检查整除性,在另一个列表中收集整除结果
  • 以逗号分隔的值返回结果列表

您的代码过于复杂。主要问题是您没有将base2转换为(二进制)base10(常规计数)。您可以使用列表理解:

result_list = []
nr = int(input("Please enter a 4 digit number made from 0 and 1 : "))

if len(str(nr)) > 4:
    nr = int(input("Please enter a 4 digit number made from 0 and 1 : "))
elif str(nr).split():
    for x in str(nr):
        if x == 0 or x == 1:
            if nr % 5 == 0:
                result_list.append(nr)
            else:
                nr = int(input("Please enter a 4 digit number made from 0 
and 1 : "))
        else:
            nr = int(input("Please enter a 4 digit number made from 0 and 1 
: "))

else:
    print(result_list)

这就是我想到的,这是一个程序,它的输出将在一个4×2的数组中,每行是值,如果它是5的倍数或不是

nums = list(input("Please enter a 4 digit number made from 0 and 1 : ").split(','))
# example: 0101,1000,1001,1010

res = [num for num in nums if not int(num, 2) % 5]

print(res)
# result: ['0101', '1010']

什么不适用于您当前的代码?您的问题具体是什么,以便我们可以提供帮助?
如果x==0或x==1:
不能为真,因为您已将
nr
转换为字符串。您需要测试字符串是否相等:
如果x在('0','1'):
。仅此一点可能无法修复代码,但这是一个需要考虑的问题。您的程序应该接受一个二进制数序列,而不是一次请求一个。至于处理二进制,这里有一个提示。检查它的功能:
print(int(“1101”,2))
可能的最高值,
0b1111=15
,因此您可以只检查数字是5、10还是15
nb_list = []

# get the input
while not len(nb_list) == 4 :
    bin_nb = str(input("Enter a number"))
    #you could add some verification for the inputs here...
    nb_list.append([int(bin_nb, 2),int(bin_nb, 2) % 5] ) #binary to decimal [ binary number, 1 if multiple 5 else 0 ]

for element in nb_list:
    if element[1] == 0 and element[0] != 0:
        print(element[0])