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:它應該可以正常工作。
添加回答
舉報