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条经验 获得超15个赞
您正在执行按位与&
运算而不是逻辑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:它应该可以正常工作。
添加回答
举报