为了账号安全,请及时绑定邮箱和手机立即绑定

在 python 中没有响应

在 python 中没有响应

婷婷同学_ 2023-04-25 17:45:48
我写了一个简单的代码:输入任意数字和数字并计算数字在数字中的次数。我写的代码是:num= int(input("enter a number"))n=numdigit = int(input("enter the digit"))times=0while n > 0 :    d = n%10    if d==digit :        times += 1        continue    else:        continue    n=n//10print ("no. of times digit gets repeated is ", times)当我尝试这段代码时,不知何故它什么也没给我
查看完整描述

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


查看完整回答
反对 回复 2023-04-25
?
慕莱坞森

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


查看完整回答
反对 回复 2023-04-25
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

由于前面有 s,该行n=n//10永远不会执行。continue如果您不打算跳过此循环迭代的剩余部分,则不需要继续。



查看完整回答
反对 回复 2023-04-25
?
蓝山帝景

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))


查看完整回答
反对 回复 2023-04-25
  • 4 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信