4 回答
 
                    
                    TA贡献1810条经验 获得超4个赞
给定您的img字符串,您可以使用str.join嵌套列表理解来实现此目的
>>> print('\n'.join(''.join('*' if i == '1' else ' ' for i in line) for line in img.split('\n')))
* *********** *********************
* *********** *********************
**** ********************
*** ********************
* ** ********************
*** ** ********************
*** ********************
* *** ********************
******** ********************
** ********************
** ********************
** *** ********************
*** ********************
*** *********************
**** *********************
**** *********************
***** *********************
*** * **********************
*** * **********************
* ********************
********************
********************
********************
********************
********************
********************
********************
********************
********************
** ********************
*** ********************
* *** * ********************
* **** ********************
**** *********************
***** *********************
* ** *** ********************
* * *********************
**********************
**********************
 
                    
                    TA贡献1804条经验 获得超2个赞
&您使用的按位运算符的优先级elif i >= 1 & i < 39:高于比较运算符。
因此,由于优先级,条件被评估为
elif i >= (1 & i) < 39:
比较链使其等价于
elif (i >= (1 & i)) and ((1 & i) < 39):
1 & i是 和 的按位1与i,它将等于 的最后一位i,因此如果i是偶数则为0,如果i为奇数则为 1。
i> (1 & i)永远都是如此True,也是如此(1 & i) < 39。你的整体状况始终是True。
 
                    
                    TA贡献1801条经验 获得超16个赞
您正在执行按位与&运算而不是逻辑and。Python 利用and关键字来执行您所建议的操作。
此外,您i == 39在if声明中排除了大小写,因此i永远不会变成 40。修改您的if声明以包含其中,因此if i >= 1 and i <= 39。
 
                    
                    TA贡献1860条经验 获得超8个赞
elif i >= 1 & i < 39:
pyt_img += f',{num}'
i = i + 1
i仅当大于或等于 1 且i小于 39 时,才会进入该代码分支。这意味着如果i 是 39,则不会进入,因为 39 不小于 39。因此,它不会加 1,i并且i永远不会达到 40。如果你使用elif i >= 1 and i <=39:它应该可以正常工作。
添加回答
举报
