python3中input输入eval用法


  • 今天用了个函数定义,用输入input的时候a,b,c=int(input())报错
ValueError: invalid literal for int() with base 10: '2,3,1'
  • 原来,用int(input())强制转换的时候是整体转换,当输入2,3,1时,引号加到了'2,3,1',所以,要用eval来进行转换,a,b,c=eval(input())在进行转换的过程中去掉引号,他认定三个数为三个整数,所以可以进行下去,如图示。微信截图_20190722151346.png
  • eval输入为qwe的时候,实际上接收的是'qwe',去掉引号是qwe,它并不能认定是什么,故要输入'"qwe"',如果要区分,则要如图所示输入a,b,c = eval('"q","w","e"')微信截图_20190722153716.png
  • 在这里我刚开始很难理解,所以我百度了很多,用两个例子做对比,定义a,b,c的值a=1,b=2,c=3,定义s='[a,b,c]'

    1.输出`s`为`'[a,b,c]'`
    2.输出`eval(s)`为`[10, 20, 30]`

    微信截图_20190722155931.png如图,懂了。

总结,eval函数就是去掉引号的一个函数,然后定义的一个函数,如果引号里面是数字,那么它会定义int类型,例:'1'。如果有两个引号,脱掉一层引号里面是字符串str类型,例:'"a"'。如果有一个引号,脱去后他会看系统有没有对应的内容,比如:a=2eval('a')那么他就会输出2

声明:芫荽 Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - python3中input输入eval用法


天若有情天亦老,人间正道是沧桑!