我在 phyton 中有一個加密解密作業,首先我將空格更改為亂數。為了完成這項作業,我使用此代碼將字串轉換為串列 a = [x for x in text]。我使用以下代碼替換了空格:
for i in range(lenghtOfText):
if ( a[i]==" "):
a[i]=str((random.randint(0, 9)))
現在我需要再用空格更改數字。我試過這個,但它不起作用
for i in range(lenghtOfText):
if (a[i] in range(0,9)):
a[i]=" "
我嘗試了另一種方法來做到這一點。但這仍然行不通。另一個代碼是
for i in range(lenghtOfText):
if (a[i] == 0 or a[i] == 1 or a[i] == 2 or a[i] == 3 or a[i] == 4 or a[i] == 5 or a[i] == 6 or a[i] == 7 or a[i] == 8 or a[i] == 9 ):
a[i]=" "
uj5u.com熱心網友回復:
那是因為字符'1'(ascii 49)與數字不同1。
試試這個:
for i in range(lenghtOfText):
try:
if (int(a[i]) in range(0,10)):
a[i]=" "
except:
pass
注意:記住范圍的結束是獨家的。
稍微好一點的方法:
digits = [str(i) for i in range(10)]
for i in range(lenghtOfText):
if a[i] in digits:
a[i] = " "
更好的是:
for i in range(lenghtOfText):
if a[i].isdigit():
a[i] = " "
還有一個,這次使用map:
a = list(map(lambda e: " " if e.isdigit() else e, a))
唯一需要注意的是,這將創建陣列的副本,而原始陣列保持不變。
uj5u.com熱心網友回復:
您似乎將空格保存為字串,但將它們查詢為整數。試試a[i] = "0"之類的。
uj5u.com熱心網友回復:
它不起作用,因為您嘗試將字串與 int 值進行比較。
a[i] 是字串型別 range(0,9) 是具有 int 值的串列。
試試這個:
for i in range(lenghtOfText):
if (int(a[i]) in range(0,9)):
a[i]=" "
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473921.html
