res=0
num=int(input("Enter a positive integer:"))
while num>0:
res=res+(num % 10)
num=num//10
print (res)
Run Code Online (Sandbox Code Playgroud)
为什么输入3**631+29是有问题的?为什么可以eval解决这个问题?正如我所看到的,程序输出将显示"逐步"对输入整数中的数字进行求和,因此它3**631+29是不是整数而是字符串?但是为什么要eval参与?
int采用整数文字作为参数(表示字符串),而不是任意算术表达式.
eval接受一个字符串并对其进行评估,即它"运行"它就好像它是代码一样.作为3**631+26一个有效的python表达式(3到631次幂和26的总和),eval适用于您的情况,但打开您的应用程序代码注入.(如果用户输入例如,会发生什么__import__('sys').exit(0)?)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |