zoukankan      html  css  js  c++  java
  • eval(input())

    看到一段代码,判读输入的数字,用的是eval(input()),查了一下,原来input()会把所有输入值,包括数字,视为字符串,而eval()会去掉字符串最外层的引号,然后当做Python语句执行[mark:语句or表达式,应该是表达式!],直观理解是:看起来像数字的字符串变成数字了。。。

    >>> a = input()
    123
    >>> type(a)
    <class 'str'>
    >>> b = eval(input())
    456
    >>> type(b)
    <class 'int'>
    >>>

     一个反例

    >>> a = eval("'pybook'")
    >>> a
    'pybook'
    

    所以本质上,eval是去一层引号,然后按语句执行,eval(input())本质是一个取输入数字的技巧

    如果不用eval,怎么取输入的数字?

    可以用int, float转数据类型,但效果不如eval

    一点补充说明

    对于eval(input()),input隐含会在输入最外层加一层引号,即把输入视为一个字符串,eval隐含会去最外层引号,如果输入的字符串带了引号,则这个引号会保留,看下面的例子

    >>> guess = input()
    0x452//2
    >>> guess
    '0x452//2'
    >>> guess = eval(input())
    0x452//2
    >>> guess
    553
    >>> guess = eval(input())
    '0x452//2'
    >>> guess
    '0x452//2' #保留输入的引号
    >>> guess = input()
    '0x452//2'
    >>> guess
    "'0x452//2'" #2层引号
    >>> 
    

      

  • 相关阅读:
    【ImageMagick】ImageMagick命令行工具
    MAC 下安装PIL
    【转】tmux入门指南
    python编码和小数据池
    ----------BMI指数小程序----------
    ----------简单购物车小程序----------
    python基础数据类型3
    python基本数据类型2
    python基本数据类型
    python循环
  • 原文地址:https://www.cnblogs.com/jamesxu/p/10802577.html
Copyright © 2011-2022 走看看