摘要:在干事情之前,先看看这个东东。行文到此,提醒列位,如果用的,请用,要加个括号。这样的输出算是对前面输出的扩展了。据说,会逐渐逐渐取代前面的。恭请列为到我的上及时更新的内容零基础学
print的一些基本用法,在前面的讲述中也涉及一些,本讲是在复习的基础上,尽量再多点内容。
eval()在print干事情之前,先看看这个东东。不是没有用,因为说不定某些时候要用到。
>>> help(eval) #这个是一招鲜,凡是不理解怎么用,就用这个看文档 Help on built-in function eval in module __builtin__: eval(...) eval(source[, globals[, locals]]) -> value Evaluate the source in the context of globals and locals. The source may be a string representing a Python expression or a code object as returned by compile(). The globals must be a dictionary and locals can be any mapping, defaulting to the current globals and locals. If only globals is given, locals defaults to it.
能看懂更好了,看不懂也没有关系。看我写的吧。哈哈。概括一下,eval()是把字符串中符合python表达式的东西计算出来。意思就是:
>>> 3+4 #这是一个表达式,python会根据计算法则计算出结果来 7 >>> "3+4" #这是一个字符串,python就不计算里面的内容了,虽然里面是一个符合python规范的表达式 "3+4" >>> eval("3+4") #这里就跟上面不一样了,就把字符串里面的表达式计算出来了 7
下面再看一个字符串“相加”的例子:
>>> "qiwsir"+".github.io" "qiwsir.github.io" >>> ""qiwsir"+".github.io"" #字符串里面,python是不会进行“计算”的 ""qiwsir"+".github.io"" >>> eval(""qiwsir"+".github.io"") #eval()做的事情完全不一样,它会把字符串里面的计算出来 "qiwsir.github.io"
顺便再说一下另外一个跟eval()有点类似的函数:exec(),这个函数专门来执行字符串或文件里面的python语句。
>>> exec "print "hello, qiwsir"" hello, qiwsir >>> "print "hello, qiwsir"" "print "hello, qiwsir""print详解
print命令在编程实践中用的比较多,特别是要向看看程序运行到某个时候产生了什么结果了,必须用print来输出,或者说,本讲更宽泛地说,就要说明白把程序中得到的结果输出问题。
比较简单的输出,前面已经涉及到过了:
>>> name = "qiwsir" >>> room = 703 >>> website = "qiwsir.github.io" >>> print "MY name is:%s My room is:%d My website is:%s"%(name,room,website) MY name is:qiwsir My room is:703 My website is:qiwsir.github.io
其中,%s,%d就是占位符。
>>> a = 3.1415926 >>> print "%d"%a #%d只能输出整数,int类型 3 >>> print "%f"%a #%f输出浮点数 3.141593 >>> print "%.2f"%a #按照要求输出小数位数 3.14 >>> print "%.9f"%a #如果要求的小数位数过多,后面就用0补全 3.141592600 >>> b = 3 >>> print "%4d"%b #如果是整数,这样写要求该整数占有四个位置,于是在前面增加三个空格 3 #而不是写成0003的样式
换一种范式,写成这样,就跟上面有点区别了。
>>> import math #引入数学模块 >>> print "PI=%f"%math.pi #默认,将圆周率打印成这个样子 PI=3.141593 >>> print "PI=%10.3f"%math.pi #约束一下,这个的含义是整数部分加上小数点和小数部分共计10位,并且右对齐 PI= 3.142 >>> print "PI=%-10.3f"%math.pi #要求显示的左对齐,其余跟上面一样 PI=3.142 >>> print "PI=%06d"%int(math.pi) #整数部分的显示,要求共6位,这样前面用0补足了。 PI=000003
其实,跟对上面数字操作类似,对字符串也可以做一些约束输出操作。看下面实验,最好看官也试试。
>>> website "qiwsir.github.io" >>> print "%.3s"%website qiw >>> print "%.*s"%(3,website) qiw >>> print "%7.3s"%website qiw >>> print "%-7.3s"%website qiw
总体上,跟对数字的输出操作类似。不过,在实际的操作中,这些用的真的不是很多,至少在我这么多年的代码生涯中,用到上面复杂操作的,就是现在给列位展示的时候,充其量用一用对float类型的数据输出小数位数的操作,其它的输出操作,以默认的那种方式居多。请看官在这里鄙夷我的无知吧。
行文到此,提醒列位,如果用python3的,请用print(),要加个括号。
print有一个特点,就是输出的时候,每行后面都自动加上一个换行符号 ,这个在前面已经有所提及。
>>> website "qiwsir.github.io" >>> for word in website.split("."): ... print word ... qiwsir github io >>> for word in website.split("."): ... print word, #注意,加了一个逗号,输出形式就变化了吧。 ... qiwsir github io%r是万能的吗?
我曾经说过,懒人改变世界,特别是在敲代码的领域。于是就有人问了,前面一会儿是%s,一会儿是%d,麻烦,有没有一个万能的?于是网上就有人给出答案了,%r就是万能的。看实验:
>>> import math >>> print "PI=%r"%math.pi PI=3.141592653589793 >>> print "Pi=%r"%int(math.pi) Pi=3
真的是万能呀!别着急,看看这个,你是不是就糊涂了?
>>> print "Pi=%s"%int(math.pi) Pi=3
当然,这样就肯定出错了:
>>> print "p=%d"%"pi" Traceback (most recent call last): File "", line 1, in TypeError: %d format: a number is required, not str
如果看到这里,看官有点糊涂是很正常的,特别是那个号称万能的%r和%s,怎么都能够对原本属于%d的进行正常输出呢?
其实,不管是%r还是%s(%d)都是把做为整数的对象转化为字符串输出了,而不是输出整数。但是%r和%s是有点区别的,本讲对这个暂不做深入研究,只是说明这样的对应:%s-->str();%r-->repr(),什么意思呢?就是说%s调用的是str()函数把对象转化为str类型,而%r是调用了repr()将对象转化为字符串。关于两者的区别请参考:Difference between str and repr in Python,下面是一个简单的例子,演示一下两者区别:
>>> import datetime >>> today = datetime.date.today() >>> today datetime.date(2014, 8, 15) >>> str(today) "2014-08-15" >>> repr(today) "datetime.date(2014, 8, 15)"
最后要表达我的一个观点,没有什么万能的,一切都是根据实际需要而定。
关于更多的输出格式占位符的说明,这个页面中有一个表格,可惜没有找到中文的,如果看官找到中文的,请共享一下呀:string formatting
再扩展>>> myinfo {"website": "qiwsir.github.io", "name": "qiwsir", "room": 703} >>> print "qiwsir is in %(room)d"%myinfo qiwsir is in 703
看官是否看明白上面的输出了?有点意思。这样的输出算是对前面输出的扩展了。
出了这个扩展之外,在输出的时候,还可以用一个名曰:format的东西,这里面看不到%,但是多了{}。看实验先:
>>> print "My name is {0} and I am in {1}".format("qiwsir",703) #将format后面的内容以此填充 My name is qiwsir and I am in 703 >>> "My website is {website}".format(website="qiwsir.github.io") #{}里面那个相当于一个变量了吧 "My website is qiwsir.github.io"
看到这里,是不是感觉这个format有点意思?一点不输给前面的输出方式。据说,format会逐渐逐渐取代前面的。关于format,我计划后面一讲继续。这里只是来一个引子,后面把用format输出搞得多点。
恭请列为到我的github上及时更新的内容:零基础学python文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/37351.html
摘要:一般所有高级语言,都包含如下语句,也不例外循环语句容许一些语句反复运行数次。条件语句容许仅当某些条件成立时才运行某个区块。无条件分支语句容许运行顺序转移到程序的其他部分之中。零基础学我在上的文章,随时更新修改。 一般编程的教材,都是要把所有的变量类型讲完,然后才讲语句。这种讲法,其实不符合学习的特点。学习,就是要循序渐进的。在这点上,我可以很吹一通了,因为我做过教师,研究教育教学,算是...
摘要:在讲述有关的时候,提到做游戏的事情后来这个事情一直没有接续。现在就是开始做那个游戏的时候了。游戏过程描述程序运行起来,随机在某个范围内选择一个整数。我们现在做一个很小的程序,也是这样来做。这个游戏还没有完呢,即使用了循环,后面还会继续。 在讲述有关list的时候,提到做游戏的事情,后来这个事情一直没有接续。不是忘记了,是在想在哪个阶段做最合适。经过一段时间学习,看官已经不是纯粹小白了,...
摘要:我在这里将他写的程序恭录于此,单元李航同学不要见怪,如果李航同学认为此举侵犯了自己的知识产权,可以告知我,我马上撤下此代码。我用的是,在输入指令上区别于李同学程序用变量接收了输入的内容。 while,翻译成中文是当...的时候,这个单词在英语中,常常用来做为时间状语,while ... someone do somthing,这种类型的说法是有的。在python中,它也有这个含义,不过...
摘要:画圈换一个说法就是循环。就相当于让依次等于中的各个值。例找出以内的能够被整除的正整数。以上做了简单分析,要实现流程,还需要细化一下。代码代码运行结果这里仅仅列举一个简单的例子,看官可以在这个例子基础上深入打印某范围内的偶数奇数等。 画圈?换一个说法就是循环。循环,是高级语言编程中重要的工作。现实生活中,很多事情都是在循环,日月更迭,斗转星移,无不是循环;王朝更迭,寻常百姓,也都是循环。...
摘要:关于元组,上一讲中涉及到了这个名词。元组是用圆括号括起来的,其中的元素之间用逗号隔开。使用而不是如同拥有一个隐含的语句,说明这一数据是常量。必须是不可变的。只有字符串整数或其它对安全的才可以用作。 关于元组,上一讲中涉及到了这个名词。本讲完整地讲述它。 先看一个例子: >>>#变量引用str >>> s = abc >>> s abc >>>#如果这样写,就会是... >>> t...
阅读 2618·2023-04-26 02:17
阅读 1581·2021-11-24 09:39
阅读 1051·2021-11-18 13:13
阅读 2462·2021-09-02 15:11
阅读 2750·2019-08-30 15:48
阅读 3370·2019-08-30 14:00
阅读 2388·2019-08-29 13:43
阅读 638·2019-08-29 13:07