Nine Heads and Tails游戏:0-511数值转3x3 H/T硬币矩阵程序实现求助
九硬币(Nine Heads and Tails)矩阵转换实现方案
核心实现思路
- 输入校验:接收用户输入后先判断是否为整数,且取值范围落在[0,511]区间,不符合要求的输入给出错误提示
- 十进制转定长二进制:将合法的输入数值转换为9位长度的二进制字符串,不足9位的在高位补0,比如数值7会被转换为
000000111 - 字符映射:遍历二进制字符串的每一位,按照规则替换:
0替换为H(正面),1替换为T(反面) - 矩阵格式化输出:将长度为9的字符序列按每3位一组拆分,每组单独输出一行,即可得到3x3的硬币矩阵
完整Python实现代码
# 输入合法性校验 while True: try: input_num = int(input("请输入0-511之间的数字: ")) if 0 <= input_num <= 511: break print("输入不合法,请输入0到511之间的整数") except ValueError: print("输入不合法,请输入有效整数") # 转换为9位补零的二进制字符串 binary_str = f"{input_num:09b}" # 二进制位映射为H/T字符 result_chars = ['H' if bit == '0' else 'T' for bit in binary_str] # 按3行输出矩阵 for row_idx in range(3): print(''.join(result_chars[row_idx*3 : (row_idx+1)*3]))
效果验证
按照需求示例输入7时,二进制串为000000111,映射后得到字符序列HHHHHHTTT,拆分后输出结果如下,完全符合要求:
HHH HHH TTT
补充说明
如果后续需要调整硬币位置和比特位的对应规则,只需要修改二进制串的遍历/切片逻辑即可:比如如果需要低位对应矩阵左上角,只需要把转换后的二进制串反转后再做映射即可。
内容的提问来源于stack exchange,提问作者Michael Aguirre
相关产品推荐
相关产品推荐

