"""练习 16:将十进制非负整数转换为二进制、八进制和十六进制。 转换过程通过反复除基数实现,不调用内置进制格式化函数。 学习说明: - convert_to_base(number, base) 是转换函数;digits 字符串提供 0 到 15 的数字符号。 - 每次除以 base,余数就是当前最低位;继续处理商,直到商为 0。 - 余数是从低位到高位得到的,所以最后需要 reversed() 倒转顺序。 - 0 要单独处理,否则循环不会运行且结果列表为空。 """ def convert_to_base(number, base): digits = "0123456789ABCDEF" if number == 0: return "0" # 先按从低位到高位收集每次除法得到的余数。 result = [] while number > 0: number, remainder = divmod(number, base) result.append(digits[remainder]) return "".join(reversed(result)) number = int(input()) if number < 0: raise ValueError("请输入非负整数") print("binary:", convert_to_base(number, 2)) print("octal:", convert_to_base(number, 8)) print("hexadecimal:", convert_to_base(number, 16))