简单for循环未执行且无报错,二进制转方块字符代码异常排查
问题分析与修复方案
你的代码执行到print('len_num = ' + str(len_num))后没有输出,核心存在两个关键错误:
循环逻辑错误:
range(len_num, 1, 1)不会触发任何循环。range的规则是当起始值大于结束值且步长为正时,循环直接终止。你需要将步长改为-1,并把结束值设为-1(确保遍历到字符串的第一个字符,索引为0),正确的循环范围应为range(len_num, -1, -1)。类型匹配错误:
binary_num是字符串,其中的元素是字符'1'和'0',但你用整数1、0做比较,导致条件永远不成立(即使循环执行,也只会输出something went wrong)。必须改为和字符'1'、'0'比较。
修正后的代码
binary_num = '1011000101010101101101001010101110100010111010101' len_num = len(binary_num)-1 print('len_num = ' + str(len_num)) squares = '' # 修正循环范围与步长,同时修正字符比较逻辑 for i in range(len_num, -1, -1): if binary_num[i] == '1': squares += '▮' elif binary_num[i] == '0': squares += '▯' else: print('something went wrong') print(squares)
如果你不需要倒序遍历二进制字符串,直接遍历字符会更简洁:
binary_num = '1011000101010101101101001010101110100010111010101' len_num = len(binary_num)-1 print('len_num = ' + str(len_num)) squares = '' for char in binary_num: if char == '1': squares += '▮' elif char == '0': squares += '▯' else: print('something went wrong') print(squares)
内容的提问来源于stack exchange,提问作者I really need help
相关产品推荐
相关产品推荐

