0
我對python非常陌生,我在代碼中調用一個函數,它有一個while循環,代碼如下。問題是在循環的最後一個被更新的變量'n'沒有正確地改變它的值,而是得到值'0'。我已經通過pdb調試器進行了檢查。我無法理解它爲什麼會發生。我是PYTHON的新手。我錯了,它與C/C++? 這PROGRAMM產生隨機密鑰,我們必須坡口,這些隨機密鑰有時會 代碼之後重複:Python腳本執行錯誤
def answer(n, b):
cyclenum = 0 #his counts no. of times loop executes
desired_len = len(str(n))
listofnums = []
while True:
newnum = str(n)
if newnum in listofnums:
print(cyclenum)
break
bla=newnum.split() #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
x5=int(bla[0])
x4=[]
while(x5>0):
t=x5%10
x4.append(t) # in this para , the sole aim is to rearrange the
x5 = x5/10 # digits of the no. in descending order
x3 = sorted(x4, key=int, reverse=True)
x2=map(str,x3)
x1=''.join(x2)
bla=x1.split()
x=int(bla[0]) #!!!!!!!!!!!!!!!!!!!!!!!!!!
bla=newnum.split()
y5=int(bla[0])
y4=[]
while(y5>0):
t=y5%10
y4.append(t) #if 0 comes in start due to ascending order
y5 = y5/10 # they are ignored
y3 = sorted(y4, key=int)
y2=map(str,y3)
y1=''.join(y2)
bla=y1.split()
y=int(bla[0])
z = x - y
newz=0
if len(str(z)) != desired_len:
newz = map(int, str(z))
lendiff = desired_len - len(str(z))
newz = list(newz)
for i in range(0, lendiff):
newz.insert(0, 0) #here ignored 0 are added
cyclenum += 1 #to keep the length constant
listofnums.append(newnum)
n = newz
answer(n="210022",b=3)
******************** **編輯1 對不起,縮進錯誤是一個錯誤
您的代碼的縮進錯誤。爲了我們能夠幫助您,您需要以正確的格式提供代碼。另一方面,問題可能出現在'newz = 0'這一行,因爲你將'newz'分配給'n'。 – EsotericVoid
如果我們知道該代碼應該做什麼,那將會更容易幫助您。請給我們一個總體概述,並在代碼中添加註釋,以解釋每個部分試圖實現的內容。我懷疑'bla = x1.split()'和'bla = y1.split()'沒有做你期望的。順便說一句,你可能應該使用'/ /'而不是'/';在Python 2中並不重要,但它在Python 3中有很大的不同。 –
@Bit我認爲你得到我的問題,我對使用全局關鍵字 –