为什么这个Python 3.3代码不起作用?未定义digc

为什么这个Python 3.3代码不起作用?未定义digc,python,defined,Python,Defined,它可以打印diga和digb,但不能与c一起使用!有什么帮助吗?它应该是一个二元到二元的转换器,但是只有1-64,一旦我破解了代码,它就会增加这个值!非常感谢 denaryno=int(input("Write a number from 1-64 ")) if 64%denaryno > 0: diga=0 remaindera=(64%denaryno) if 32/denaryno<1: digb=1 remainderb

它可以打印diga和digb,但不能与c一起使用!有什么帮助吗?它应该是一个二元到二元的转换器,但是只有1-64,一旦我破解了代码,它就会增加这个值!非常感谢

denaryno=int(input("Write a number from 1-64 "))
if 64%denaryno > 0:
    diga=0
    remaindera=(64%denaryno)
    if 32/denaryno<1:
        digb=1
        remainderb=(denaryno%32)
    else:
        digb =0
        if 16/remainderb<1:
            digc=1
            remainderc=(denaryno%16)
        else:
            digc=0
            if 8/remainderc<1:
                digd=1
                remainderd=(denaryno%8)
            else:
                digd=0
                if 4/remainderd<1:
                    dige=1
                    remaindere=(denary%4)
                else:
                    dige=0
                    if 2/remaindere<1:
                        digf=1
                        remainderf=(denary%2)
                    else:
                        digf=0
                        if 1/remainderf<1:
                            digg=1
                            remainderg=(denary%1)
                        else:
                            digg=0
print (str(diga)+str(digb))
denaryno=int(输入(“从1-64写入一个数字”))
如果64%denaryno>0:
diga=0
剩余A=(64%第纳尔否)

if 32/denaryno您仅在顶部的一个
if
/
else
语句中设置
digc
。如果
32/denaryno哇,这是一个很大的工作,你不必做所有这些

def bin_convert(x, count=8):
    return "".join(map(lambda y:str((x>>y)&1), range(count-1, -1, -1)))
下面是由easy->important组成的函数

str()
返回一个字符串

range()
是一种从一个数字到另一个数字的列表获取方法。这样写的
范围(count-1,-1)
向后计数

“”。join()
是一种获取iterable并将各个部分组合在一起的方法

map()
是一种获取函数并将其应用于iterable的方法

lambda
是一种在一行中编写函数的方法。我很懒,本来可以写另一个
def func_name(y)
,它也可以工作


>
是一种移位位的方法。(我相信理解这个是理解你的问题的关键部分)

应该是他们用二进制输入的任何数字。例如,如果他们输入的50输出应该是0110010,你应该尝试递归地执行此操作,或者在循环/使用映射(字典)中执行此操作。此代码非常不可读。我可以建议使用内置函数
bin
?对,我不明白,我是一个真正的新手。道歉。有没有可能得到一个示例行?谢谢你Pieters先生,我知道我的代码效率很低。。但是,我有没有办法让它工作,而不增加额外的功能,只需切换尽可能少的功能?@user2942083:我现在在我的回答中给了你使你的功能工作所需要的一切;但我敦促你至少考虑使用一个列表来代替。有机会对代码发表评论吗?我对这些新功能不太熟悉,非常感谢。
def bin_convert(x, count=8):
    return "".join(map(lambda y:str((x>>y)&1), range(count-1, -1, -1)))