4 回答
TA贡献1793条经验 获得超6个赞
删除elseandcontinue语句,因为循环总是命中 thecontinue而永远不会到达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贡献1810条经验 获得超4个赞
if d==digit :
times += 1
continue
else:
continue
n=n//10
无法到达上面除以 10 的代码行,因为 true 和 false 分支都以 重新启动循环,因此永远不会更改值并且您将永远循环(对于非零数字输入)。ncontinuen
您应该continue从两个分支中删除,事实上,您不需要该部分else,因为它不执行任何操作:
if d == digit:
times += 1
n = n // 10
TA贡献1843条经验 获得超7个赞
其他答案指出了您的continue
误用,但有几种 Pythonic 方法可以做到这一点。
divmod()
在一次操作中巧妙地进行除法和取模:
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)
您也可以更简单地不对数字做任何事情,而是对字符串做任何事情,然后使用str.count:
num = input("enter a number")
digit = input("enter the digit")
print("no. of times digit gets repeated is ", num.count(digit))
添加回答
举报