笨方法学Python三

笨方法学Python三,第1张

习题4:变量(variable)和命名

你已经学会了print和算术运算。下一步你要学的是“变量”。在编程中,变量只不过是用来指代某个东西的名字。程序员通过使用变量名可以让他们的程序读起来更像英语。而且因为程序员的记性都不怎么地,变量名可以让他们更容易记住程序的内容。如果他们没有在写程序时使用好的变量名,在下一次读到原来写的代码时他们会大为头疼的。

如果你被这章习题难住了的话,记得我们之前教过的找到不同点、注意细节。

1.在每一行的上面写一行注解,给自己解释一下这一行的作用。

2.倒着读你的.py文件

3.朗读你的.py文件,将每个字符也朗读出来。

cars=100

space_in_a_car = 4.0

drivers=30

passengers = 90

5cars_not_driven = cars - drivers

cars_driven = drivers

carpool_capacity = cars_driven * space_in_a_car

average_passengers_per_car = passengers / cars_driven

11print "There are", cars, "cars available."

12print "There are only", drivers,

,"drivers available."

13print

"There will be", cars_not_driven, "empty cars today."

14 print "We can transport", carpool_capacity, "people today."

15print "We have", passengers, "to carpool today."

16print "We need to put about"

,average_passengers_per_car, "in each car."

Note: space_in_a_car中的_是下划线(underscore)字符。你要自己学会怎样打出这个字符来。

这个符号在变量里通常被用作假想的空格,用来隔开单词。你应该看到的结果

$ python ex4.py

There are 100 cars available.

There are only 30 drivers available.

There will be 7O empty cars today-

We can transport 120.o people today.

We have 90 to carpool today.

We need to put about 3 in each car.

加分习题

当我刚开始写这个程序时我犯了个错误,python告诉我这样的错误信息:

Traceback (most recent call last):

File "ex4.py", line 8, in

average_passengers_per_car = car_pool_capacity / passenger

NameError: name 'car_pool_capacity' is not defined

用你自己的话解释一下这个错误信息,解释时记得使用行号,而且要说明原因。

更多的加分习题:

1.我在程序里用了4.0作为space_in_a_car的值,这样做有必要吗?如果只用4会有什么问题?

2.记住4.0是一个“浮点数”,自己研究一下这是什么意思。

3.在每一个变量赋值的上一行返洞或加上一行注解。

4.记住=的名字是等于(equal),它的作用是为东西取名。

5.记住_是下划线字符(underscore)。

6.将python作为计算器运行起来,就跟以前一样,不过这一次在计算漏伍过程中使用变颤芹量名来做计算,常见的变量名有i,x,j等等。

习题5:更多的变量和打印

我们现在要键入更多的变量并且把它们打印出来。这次我们将使用一个叫“格式化字符串(formatstring)”的东西、每一次你使用“把一些文本引用起来,你就建立了一个字符串。字符串是程序将信息展示给人的方式。你可以打印它们,可以将它们写入文件,还可以将它们发送给网站服务器,很多事情都是通过字符串交流实现的。

字符串是非常好用的东西,所以再这个练习中你将学会如何创建包含变量内容的字符串。使用专门的格式和语法把变量的内容放到字符串里,相当于来告诉python:“嘿,这是一个格式化字符串,把这些变量放到那几个位置。’一样的,即使你读不懂这些内容,只要一字不差地键入就可以了。

my_name =

'ZedA. Shaw'

my_age= 35 # nota lie

3my_height= 74 # inches

4my_weight=180#lbs

5my_eyes = 'Blue

6 my_teeth = "White'

7my_hair = 'Brown

print "Let's talk about %s." % my_name

1o print "He's %d inches tall." %my_height

11 print "He's %d pounds heavy." % my_weight

12print "Actually that's not too heavy.

13print "He's got %s eyes and %s hair." % (my_eyes, my_hair)

14print "His teeth are usually %s depending on the coffee." % my_teeth

15

16# this line is tricky, try to get it ecactlyright

17print "If I add %d, %d, and %d I get %a."%(

18

my_age, my_height, my_weight, my_age

+ my_height + my_weight)

Warning:

如果你使用了非ASCII字符而且碰到了编码错误,记得在最顶端加一行#--

coding:

utf-8-

你应该看到的结果

$python ex5.py

Let's talk about Zed A. Shaw

He's 74inches tall.

He's180 pounds heavy

Actually that's not too heavy.

He's got Blue eyes and Brown hair.

His teeth are usually White depending on the coffee

If I add 35,74,and 180 I get 289.

加分习题

1.修改所有的变量名字,把它们前面的“my“去掉。确认将每一个地方的都改掉,不只是你使用“=“赋值过的地方。

2.试着使用更多的格式化字符。例如%r就是是非常有用的一个,它的含义是“不管什么都打印出来”。

3.在网上搜索所有的Pvthon格式化字符。

4.试着使用变量将英寸和磅转换成厘米和千克。不要直接键入答案。使用Pvthon的计算功能来完成。习题6:字符串(string)和文本虽然你已经在程序中写过字符串了,你还没学过它们的用处。在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途。首先我们解释一下字符串是什么东西。

字符串通常是指你想要展示给别人的、或者是你想要从程序里“导出”的一小段字符。Python可以通过文本里的双引号"或者单引号,识别出字符串来。这在你以前的print练习中你已经见过很多次了。如果你把单引号或者双引号括起来的文本放到print后面,它们就会被python打印出来。

字符串可以包含格式化字符%s,这个你之前也见过的。你只要将格式化的变量放到字符串中,再紧跟着一个百分号%(percent),再紧跟着变量名即可。唯一要注意的地方,是如果你想要在字符串中通过格式化字符放入多个变量的时候,你需要将变量放到()圆括号(parenthesis)中,而且变量之间用,逗号(comma)隔开。就像你逛商店说“我要买牛奶、面包、鸡蛋、八宝粥”一样,只不过程序员说的是”(milkeggs, bread, soup)”。

我们将键入大量的字符串、变量、和格式化字符,并且将它们打印出来。我们还将练习使用简写的变量名。程序员喜欢使用恼人的难度的简写来节约打字时间,所以我们现在就提早学会这个,这样你就能读懂并且写出这些东西了。

x="There are %d types of people."%10

binary = "binary"

do_not = "don't"

y= "Those who know %s and those who %s." % (binary, do_not)

print x

print y

print "I said: %r."%x

print "I also said: '%s'."%y

hilarious = False

joke_evaluation = "Isn't that joke so funny?!%r"

print joke_evaluation % hilarious

w="This is the left side of..."

e= "a string with a right side."

print w+e

你应该看到的结果

$ python ex6.py

There are 10 types of people.

Those who know binary and those who don't.

I said: 'There are 1o types of people.'

I also said: 'Those who know binary and those who don't.'

Isn't that joke so funny?! False

This is the left side of...a string with a right side

加分习题

1.通读程序,在每一行的上面写一行注解,给自己解释一下这一行的作用。

2.找到所有的”字符串包含字符串”的位置,总共有四个位置。

3.你确定只有四个位置吗?你怎么知道的?没准我在骗你呢。

4.解释一下为什么w和e用+连起来就可以生成一个更长的字符串。

ifn = r"源文件路径"

ofn = r"目标文件路径"橡陪衫

#写入和写出带梁腔上“b”是为了防止读到二进制文件而无法读完的问题

infile = open(ifn, '乱塌rb')

outfile = open(ofn, 'wb')

outfile.write(infile.read())

infile.close()

outfile.close()

读文件

    1)使用open()方法打开文件,返回一个文件对象

        原型:open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

        举例:f = open('test.txt', 'r')

        test.txt表示文件路径(包含文件名,这个file参举缓备数可以是绝对或者相对路径)

        r表示是读文本文件,rb是读二进制文本文件。(这个mode参数默认值就是r)

    2)使用close()方法关闭文件

        f.close()

        打开后的文件必须关闭,因为文件对象会占用系统资源,系统打开文件数量也就有限了

    3)打开文件时的异常处理

        f=open('test.txt', 'r')

        f.read()

        f.close()

        FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

        文件读写时都有可能产生异常IOError(比如文件不存在),这样其后面的f.read(),f.close()就不会调用。为保证无论是否异常都可以关闭文件,一般使用try ... finally来处理:

        try:

            f = open('test.txt', 'r')

            f.read()

        finally:

            if f:

     哪数           f.close()

        但这种写法过于繁琐,所以Python引入了with语句来自动调用close()方法:

        with open('test.txt', 'r') as f:

            f.read()

    4)读文件 - read()、readline() 和 readlines()

        read() 一次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件过大,内存不够,可以通过反复调用read(size)方法,每次最多读取size个字节的内容。

        readline() 一次读取文件中一行内容,可反复调用

        readlines() 一次读取所有内容并按行返回列表,该列表可以由for ... in ... 结构再进一步处理。

        特别注意:

        这三种方法是把每行末尾的'\n'也读进来了,如有需要就得我们手动去掉'\n'

        with open('test.txt', 'r') as f:

            list = f.readlines()

        for i in range(0, len(list)):

            list[i] = list[i].rstrip('\n')

写文件

    1)写文件和读文件是一样的,唯一区别是open文件时,传入标识符不同,即'w'或者'wb'表示写文本文件或写二进制文件

    f = open('test.txt', 'w')

    f = open('test.txt', 'wb')

    f = open('test.txt', 'a')

    f.close()

    特别注意:

    1. 如果没有这个文件,会自动创建一个新文件;如果有,就会先把原文件的内容清空再写入;若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式

    2. 写文件, *** 作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时, *** 作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。

    2)写文件 - write()、writelines()

    write()方法和read()、readline()方正毁法对应,是将字符串写入到文件中。

    writelines()方法和readlines()方法对应,也是针对 列表 的 *** 作。它接收一个 字符串列表 作为参数,将他们写入到文件中。

    特别注意:

    换行符不会自动的加入,需要显式的加入换行符。

    f = open('test.txt', 'w')

    f.writelines(["111\n", "222\n", "333\n"])

补充说明:

1)对于非默认编码(utf-8)的文件,需要open时添加encording参数,选择对应的编码方式

2)r+, w+, a+,可读可写

3)seek()方法,移动文件指针

seek(offset[, whence]) ,offset是相对于某个位置的偏移量。位置由whence决定,默认whence=0,从开头起;whence=1,从当前位置算起;whence=2相对于文件末尾移动,通常offset取负值。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12252361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存