RWPy4learner 11.3.30 documentation

Version: 11.3.30
[首页] 好嘛,立即开始 << 通信录变量版 (Source) >>用if判断

通信录变量版

“Ok,在前面,我已经能够熟练地使用Python进行基本的调试和编写了,好,现在,我就来构思一下我的这个通信录程序应该如何用程序实现!对,我还是初学者,就先不考虑过于高级的功能,就先实现最简单也是最重要的功能–显示联系人的信息吧。”小白想“对,我已经学习过了print ”...” 这个输出语句了,那么我们也可以直接用这个语句显示出联系人的信息来!”在明确实现程序的目的与,小白步骤后,小白马上对其进行了程序的实现。

print "Name:Jim"
print "Tel:13456"
print "Name:Tom"
print "Tel:12345"
raw_input()

运行程序后,得到输出:

Name:Jim
Tel:13456
Name:Tom
Tel:12345

“哈哈,真是太棒了,实现一个通信录的基本功能原来就是如此的简单!”小白亢奋了,随即产生了一个完善程序的设想:“能不能在通信录中显示中文呢?俺又不是米国人,就这显示英文的通信录,拿回班里发布还不被人骂死?对,首先实现中文的通信录”小白又确立了下一个奋斗的目标:实现通信录的中文化。

实现程序中文化:

“中文嘛,还不简单?把print ”...”里的英文换成中文就行了?”想到解决办法的小白马上进行了实验。

print "姓名:Jim"
print "电话:13456"
print "姓名:Tom"
print "电话:12345"
raw_input()

当档,程序写好写好,小白点run运行..咦?它提示了一个显示着 # -- coding: cp936 -- 的提示框。“这是什么?”小白想,“先不管他了,先点OK让它顺利运行吧。”小白想,小白点击OK运行,输出了如下结果:

姓名:Jim
电话:13456
姓名:Tom
电话:12345

“哈哈哈,看起来是真的实现了 Python 程序的中文化了,可是刚刚点 Run 时出现的显示着: # -- coding: cp936 -- 的提示框又是什么呢?为什么有这个东西呢?这个东西起了什么作用呢?”小白又产生了新的问题。“对,因为我是初学者,凡是发现难题我们都要把它弄懂啊,一定要把基础打好,不然以后怎样开发出真正有用的程序来呢?”小白自言自语道。

“对,我就先到网上去搜索一下这句话吧,看看会有什么样的结果”,小白想也不想,迅速打开: cn.bing.com ,输入:-- coding: cp936 -- 进行搜索,在返回过来的搜索结果的第二项,小白发现了这个内容。

../_images/ch01-2-search.png

“这貌似就是我想要的。”小白点击该网址打开该网页,这是一个论坛,小白搜寻着。“嗯?发现目标,貌似就是这个”

../_images/ch01-2-search2.png

“哈哈,原来是指定程序运行时的编码啊,看来想要使用中文前提是必须要有正确的编码,可是编码又是什么呢?小白继续 bing ”,果然,第一个内容就出现了小白想要得东西:

../_images/ch01-2-search3.png

小白仔细阅读了百度百科上的内容后,明白了编码的意义。“哦,原来编码就是把各种自然语言编译成计算机能够处理的东东啊”,通过百度百科。小白还了解到,中文的编码还有 gbk , gb2312 等。 “那我到底是用什么编码才能更好地进行程序的编写呢?”小白想:“对,我的通信录软件要以推广到全世界为目的,这样的话要兼容适应多种语言才行,那样,有没有一种能适应各种自然语言的编码呢?”小白又开始挠头了。

“对,可以上列表问问啊,列表上行者们这么多,并且都有丰富的软件开发经验,为何不去问问他们呢?”

小白马上列表,进行了询问。

标题:有没有一种能够适应所有自然语言的编码呢?
邮件:
    有没有一种能够适应所有自然语言的编码呢?写程序需要呐。

行者的回答只有一句话:

utf-8

“utf-8”小白叫到。“这看起来更像是一个编码的名字吗!咱就先上网了解了解它的资料,看看他到底是怎样的一种编码吧!”小白想。

小白说着打开 bing ,输入 utf-8 ,他在 bing 的第三项找到他想要的答案。

../_images/ch01-2-search4.png

小白迅速进入其内进行阅读,在仔细地阅读后,小白长长的舒了一口气。

../_images/ch01-2-search5.png

“这 utf-8 不错,正是我想找的东西。以后就用他来做我的程序内部所使用的编码吧。”小白想“对,我如果想要改变编码,只要把他提示框显示的 # -- coding: cp936 -- 中的 cp936 改成 utf-8 使其变成 # -- coding: utf-8 -- 不就行了嘛? ”小白说着的开了刚刚写的程序,点击 Save ,等提示框中的内容显示出来以后点击 ok 键进行确认,然后再点击 Run 进行运行。

姓名:Jim
电话:13456
姓名:Tom
电话:12345

“看起来没有任何问题嘛!好,编码问题终于解决了!!”小白又成功解决了一个问题。

“那好,下面开始继续干我们的通信录制作”对,接下来要做的就是进行数据的录入了”,小白迅速敲击键盘,进行数据点的录入

print "姓名:Jim"
print "电话:13456"
print "姓名:Tom"
print "电话:12345"
print "姓名:Jack"
print "电话:45898"
print "姓名:Jenny"
print "电话:98563"
print "姓名:Tony"
print "电话:89514"
print "姓名:Ben"
print "电话:65544"
print "姓名:Tim"
print "电话:48165"
print "姓名:Jam"
print "电话:14564"
print "姓名:Sam"
print "电话:13456"
.......

“哇塞,这也太复杂了吧?这要是把全班的信息都录入的话?要花多长的时间呐?有没有一种更简便又能实现上述功能的办法呢?”小白又在想。 这是,小白的舅舅又走了过来,这个嘛,可以用变量的办法来进行代码的化简,但是至于怎么化简,这点我是不会告诉你的,还得让你自个儿去探索!” 小白:“好,自个儿就自个儿,不就自学个知识,有什么难的。”

小白没有忘记《简明的 Python 教程》这样东西,直觉告诉他想要的东西都在里面,他马上去进行了查找,果然,找到了他想要的东西:

../_images/ch01_2_bl.png

小白看完了《简明的 Python 教程》中有关变量的介绍后,豁然开朗:

“哦,原来变量就是一个可变的量啊,就是对应标示符里的东西是可变的。”

小白马上打开了 IDLE 进行了实验

>>> a=1    #把 1 赋值给变量 a
>>> print a  #打印 a
1
>>> a=2
>>> print a
2
>>> a="你好"  #把 你好 赋值给变量 a
>>> print a   #打印 a
你好
>>> a="你们好"
>>> print a
你们好
>>>

“哈哈,果然,变量就是可变的,如果一个变量赋值之后再进行赋值的话,后一个赋值上去的东东就会覆盖前一个赋值上去的东东。”小白道吗,“可是,为什么舅舅会说变量会使程序更简便呢?在这里看来它好像只是能用来储存数据罢了。”小白想啊想,正当他无聊翻看《简明的 Python 教程》时,他看到了这么一些东西:

../_images/ch01-2-search6.png
“对,变量是可以相加起来的,那么变量可不可以相减呢?”,无聊之中的小白决定试一试。
>>> a=3
>>> b=a-1 #变量 b 等于 a-1(3-1)
>>> print b
2
>>> c=4
>>> d=c+a
>>> print d
8

“哇塞,变量真的可以相加减,那么,有文字的变量可不可以相加呢?”小白想,“还是试试才知道。”

>>> a="你好"
>>> b="吗"
>>> c=a+b
>>> print c
你好吗
>>> d="他"
>>> e=1
>>> print d+e

Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    print d+e
TypeError: cannot concatenate 'str' and 'int' objects
>>>

“咦?怎么会出错了呢?前面明明运行得好好的,但是后面的却错了”小白疑惑起来,“并且返回了一些红色的字回来,诶?等下,那些红色的字好像正在告诉我程序错在哪里了” 小白虽说只是高中生,但是,他还是懂英文的,“至少我有 3000 个高考必修单词嘛”小白想。

他隐隐约约看出来了,“哦,原来他应该是这个意思吧: print d+e 应该就是出错的语句了吧?咦?下面好像就是错误的原因唉:

TypeError: cannot concatenate 'str' and 'int' objects

”哦,我明白了,它应该说的是“:

  类型错误:不能连接 'str' 和 'int' 对象

”哈哈,我的英语还是不错的,竟然能看出他错哪?“,可是,小白又想到了一个新的问题:“str 和 int 又是什么呢?为什么这两个对象就不能链接呢?”

”唉,这已经不是我能解决的问题了,还是上网问问列表吧?“小白迅速打开浏览器,登陆 Gmail ,并且发帖:

标题:int 和 str 对象为什么不能连接?
内容:
   我在写这么一段程序:
        >>> d="他"
    >>> e=1
    >>> print d+e

        运行时,出现了如下错误:
        TypeError: cannot concatenate 'str' and 'int' objects
        是 str 和 int 类型不能互相相加,这是为什么呢?谢谢。

行者很快做出了答复:

int 是数字类型,一种层面上就是数字,向 1,2,3,4,5 这样的,而且,简明教程里也有这样的解释:

”数
在Python中有4种类型的数——整数、长整数、浮点数和复数。
2是一个整数的例子。
长整数不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子。“

反而言之,str 就是字符串,就是我们通常用的,有引号隐着的那些,简明教程里也有这样的解释:
”字符串是 字符的序列 。字符串基本上就是一组单词。“


两者的区别其实就在于此,int 和 str 是 python 里面最常用的类型。

读完行者的邮件,小白豁然开朗,”哦,原来就是数字与字符的区别,但,这个错误还是我太粗心造成的吧,简明教程里有而我居然没看到“,小白敲了敲自己的脑袋。“好,既然知道了,这就来实践下,巩固下记忆”

>>> a="你"
>>> b="好"
>>> print a+b
你好
>>> c="你"
>>> b="1"
>>> print c+b
你1
>>>

“哈哈,果然是这样没错,只要把不同类型的东西变为同一个类型就可以了,把int类型的1加上”“不就变成str类型的”1”了吗”小白笑道,突然,小白灵光一闪,“哦,我终于明白了为什么舅舅会说变量能让程序变得更简便了,既然变量可以相加,那么,就可以这么做哈”

tel="电话:"
name="姓名"

print name+"张三"
print tel+"12345"
print name+"李四"
print tel+"54321"

“不错,不错,果然,这样管理起来轻松多了,好看也好看很多,不过,看起来好像只是省了“电话:”和“姓名”两个字唉,也没省多少,不过,联系人多的话,可能会简便一点吧.......”小白苦笑道。

(第二节完)