为了计算一个数字的位数,我用python写了这段代码:
a=int(input('number: '))
count=0
while a!=0:
a=a//10
count=count+1
print('number has ',count,'digits')
它适用于13,1900,3222,....
等输入,但对于以下数字,它给予错误:3^21, 2^3,3*4,...
上面写着:
ValueError: invalid literal for int() with base 10: '3**21'
3**21是整数输入,那么为什么它会出现这个错误,我应该如何修复这个错误?
4条答案
按热度按时间7d7tgy0s1#
int()
构造函数接受int的字符串表示,而2**5
不是,这是一个数学运算,你可以使用eval
来计算它。我已经添加了一个额外的变量value
来跟踪初始值并在结束时打印它小心️
6yt4nkrj2#
你可以试试
输出量
只有当a只包含数字时,此代码才会将a转换为int,否则它将执行python命令,将输入的过期时间存储为expiration而不是int。
q3qa4bjr3#
'3^21'
和'3**21'
都不是整数,它们是Python表达式的 * 字符串 *,如果Python解释器对它们求值,它们将求值为整数。int
内建程式只接受'100'
、'22'
或'10460353203'
等字串。(
int
还有一个base
参数,默认为2
,允许您发出类似int('AA', 16)
的命令,但它仍然不允许您传递您试图传递的字符串表达式。)xqk2d5yq4#