4 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
刪除elseandcontinue語(yǔ)句,因?yàn)檠h(huán)總是命中 thecontinue而永遠(yuǎn)不會(huì)到達(dá)n=n//10
num= int(input("enter a number"))
n=num
digit = int(input("enter the digit"))
times=0
while n > 0 :
d = n%10
if d==digit :
times += 1
n=n//10
print ("no. of times digit gets repeated is ", times)
輸出:
enter a number1111222233344567433232222222
enter the digit2
no. of times digit gets repeated is 12

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
if d==digit :
times += 1
continue
else:
continue
n=n//10
無(wú)法到達(dá)上面除以 10 的代碼行,因?yàn)?true 和 false 分支都以 重新啟動(dòng)循環(huán),因此永遠(yuǎn)不會(huì)更改值并且您將永遠(yuǎn)循環(huán)(對(duì)于非零數(shù)字輸入)。ncontinuen
您應(yīng)該continue從兩個(gè)分支中刪除,事實(shí)上,您不需要該部分else,因?yàn)樗粓?zhí)行任何操作:
if d == digit:
times += 1
n = n // 10

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于前面有 s,該行n=n//10
永遠(yuǎn)不會(huì)執(zhí)行。continue
如果您不打算跳過(guò)此循環(huán)迭代的剩余部分,則不需要繼續(xù)。

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
其他答案指出了您的continue
誤用,但有幾種 Pythonic 方法可以做到這一點(diǎn)。
divmod()
在一次操作中巧妙地進(jìn)行除法和取模:
num = int(input("enter a number"))
digit = int(input("enter the digit"))
times = 0
while num > 0:
? ? num, d = divmod(num, 10)
? ? if d == digit:
? ? ? ? times += 1
print("no. of times digit gets repeated is ", times)
您也可以更簡(jiǎn)單地不對(duì)數(shù)字做任何事情,而是對(duì)字符串做任何事情,然后使用str.count:
num = input("enter a number")
digit = input("enter the digit")
print("no. of times digit gets repeated is ", num.count(digit))
添加回答
舉報(bào)