Python 3.7.9 如何将if/else分支print输出合并为单行打印
实现二进制单行输出的修改方案
问题根因
Python内置的print()函数默认会在每次输出内容的末尾追加换行符,你在循环中每计算出一位二进制位就单独调用一次print,自然会把每一位都打印到单独的行上。
修改方案
不需要调整现有数值转换逻辑,也不需要在dec2bin函数中添加return语句,仅需修改print的传参即可满足要求:
- 给打印0、1的print调用增加
end=''参数,让函数输出完数字后不追加换行,改为追加空字符串,所有二进制位就会连续拼接在同一行输出 - 所有二进制位打印完成后,额外调用一次空的
print()补一个末尾换行,避免后续输出直接跟在二进制串后面
修改后的完整dec2bin函数实现如下:
def dec2bin(value, number_of_digits): while number_of_digits > 0: binaryvalue = 2 ** (number_of_digits - 1) if value >= binaryvalue: print("1", end='') value = value - binaryvalue else: print("0", end='') number_of_digits = number_of_digits - 1 # 补末尾换行 print()
你原来的函数调用逻辑不需要改动,直接复用即可:
if inputvalue < 256: print("The number", inputvalue, "fits in one byte and in binary form: ") dec2bin(inputvalue, 8) elif inputvalue > 256: print("The number", inputvalue, "fits in one word (16-bit) and in binary form: ") dec2bin(inputvalue, 16)
小提示:现有判断逻辑遗漏了
inputvalue == 256的场景,256已经超出8位无符号数的表示范围(0-255),建议把第二个分支的判断改为else,避免输入256时没有任何输出。
内容的提问来源于stack exchange,提问作者Dauroc
相关产品推荐
相关产品推荐

