我正在为学校做一个作业,今晚就要交了,我不知道为什么它不起作用。一般来说,我对编程很陌生,但我不明白为什么它不起作用。 程序应该从十进制转换为二进制,并根据数字的大小,以8位或16位打印
def dec2bin(värde, antal_bitar):
while bitvärde == (2 ** (antal_bitar - 1)):
if värde >= bitvärde:
return str("1")
värde= värde - bitvärde
else:
return str("0")
antal_bitar = antal_bitar - 1
invärde_ok = False
invärde = 0
while invärde_ok == False:
invärde=(int(input("Ange ett decimalt värde: ")))
if (invärde > 65536):
print("Fel. Kan inte hantera stora tal. Försök igen.")
else:
if invärde < 0:
print("Fel. Kan bara hantera positiva tal. Försök igen.")
else:
invärde_ok = True
if invärde < 256:
bitvärde=8
print("Talet", invärde , "ryms i en byte och blir binärt:")
print(dec2bin(invärde,bitvärde))
else:
bitvärde=16
print("Talet", invärde , "ryms i 16 bitar och blir binärt:")
print(dec2bin(invärde,bitvärde))
对不起,瑞典部分
问题是,不是在dec2bin函数的每次迭代中都给bitvarde一个新值,而是检查它是否等于某个值,而实际上它不是。相反,您应该使用For循环
这将在每次迭代中给我一个不同的值。 范围(y-1,-1,-1)仅仅意味着我将得到从y-1开始的值,每一圈改变-1,在-1之前结束,即0
在循环中,只需添加以下内容:
从端部拆下y=y-1。 另外,当您在函数中使用return时,函数的执行也将结束。您希望它在最后一个字符串的末尾添加1或0
为此,请在开头(For循环之前)定义一个空字符串result=“”。 而不是
return str("1")
,使用result += "1"
,它的简单意思是result = result + "1"
。 在函数末尾,在循环之后,输入:那就够了!当然,您可以用瑞典语将结果重命名为其他名称。 以下是最终代码的外观:
希望这与您得到的伪代码匹配
相关问题 更多 >
编程相关推荐