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