我正在Python3.6.1上编写一个程序,它计算用户给定数字的数字数。我使用的是句子“而不是真”,而不是函数或字符串,因为我还没有学会使用它们。这是我的代码:
number=int(input("Write number: "))
cont=0
while True:
number=number/10
cont=cont+1
if number==0:
break
print("The number of digits is: ", cont)我的问题是上面的代码不起作用,因为当我输入,比如说123,程序给我的值是326。我不知道我的代码有什么问题,所以我如何解决这个问题?
发布于 2017-07-04 02:34:03
看看这个:
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 123 / 10
12.3是的,/是Python中的浮点除法,所以它没有做您期望的事情。
如果在除以10之后插入print(number),您可以看到实际发生了什么。它会连续除法,直到得到一个如此小的数字,以至于无法区分它和零的区别:
12.3
1.23
0.123
0.0123
0.00123
0.000123
1.23e-05
1.23e-06
1.23e-07
1.2300000000000001e-08
1.23e-09
1.2300000000000001e-10
1.2300000000000002e-11
1.2300000000000002e-12
1.2300000000000003e-13
1.2300000000000003e-14
1.2300000000000003e-15
:
1.2299999999999997e-307
1.2299999999999997e-308
1.23e-309
1.23e-310
1.23e-311
1.23e-312
1.23e-313
1.23e-314
1.23e-315
1.23e-316
1.23e-317
1.23e-318
1.23003e-319
1.23e-320
1.23e-321
1.24e-322
1e-323
0.0您可以通过更改以下内容来解决这个问题:
number=number/10分为以下任何一种:
number = int(number / 10)
number = number // 10这将执行整数除法,因此将在正确的步骤数之后停止。
发布于 2017-07-04 02:37:54
您没有将数字转换为字符串并使用len( string )的具体原因吗?
len(str(number))更新(感谢评论):
len(str(abs(number)))发布于 2017-07-04 02:34:13
默认情况下,Python 3做浮点除法。您需要使用整数除法。number = number // 10。
https://stackoverflow.com/questions/44896111
复制相似问题