Python核心编程第二版第三章Python基础(课后习题)----我的答案(上)

时间:2022-05-26 07:48:11

3-1.标识符。为什么Python中不需要变量名和变量类型声明?

变量的赋值即是变量声明和定义的过程。所以不需要声明变量。也很好解释了python是一门动态语言。

3-2.标识符。为什么Python中不需要声明函数类型?

和不用声明变量一样,Python不用去声明函数的返回类型,是由于其“弱类型”的语言特性决定。

弱类型:

弱类型语言vbs:
a=1
b=a+"1"+"a" //结果是11a,这里 a 成了字符串

c=a+1 //结果是2 ,这里a则是数字型

区分大小写,需要实现申明类型外,一个重要的区别是,弱类型的语言的东西没有明显的类型,他能随着环境的不同,自动变换类型
3-3.标识符。为什么应当避免在变量名的开始和结尾使用下划线?

因为下划线对解释器是有特殊意义的,而且是内建标识符所使用的符号。开头使用下划线表示该变量为私有变量,而开头和结尾使用下划线__xxx__这种变量名对Python来说有特殊含义,对于普通的变量应避免这种命名风格。

私有变量:在模块或类外不可使用

3-4.语句。在Python中一行可以书写多个语句吗?

可以。使用(;)可以将多个语句写在同一行。但会降低代码的可读性,不提倡这么做。

import sys;x = 'foo'; sys.stdout.write(x + '\n')
3-5.语句。在Python中可以将一个语句分成多行书写吗?
可以。使用反斜杠(\)换行分隔。
if (weather_is_hot == 1) and \
   (shark_warnings == 0):
      send_goto_beach_mesg_to_pager()
有两种例外情况不用反斜杠也可以跨行。在使用闭合操作符或三引号包括下字符串也能跨行。
3-6.(a).
>>> x,y,z = 1, 2, 3
>>> x
1
>>> y
2
>>> z
3
(b).
>>> z,x,y = y,z,x
>>> x
3
>>> y
1
>>> z
2

3-7.合法标识符:int32, printf, print, _print, this, self, __name__, bool, true, big-daddy, type, thisIsn'AVar, thisIsAVar, R_U_Ready, Int, True, if, do, counter-1, access

不合法标识符:40XL, $aving$, 0x40L, 2hot2touch, _.开始时没有使用下划线或字母。

关键字:print,if


3-8.

# -*- coding: utf-8 -*-
#导入os模块
import os
def maketextfile():
	ls = os.linesep
    #无限循环
	while True:
	    #使用if语句判断文件是否重名
		if os.path.exists(fname):
			print "ERROR: '%s' already exists" % fname
		else:
			break
    #建立一个空的列表		
	all = []
	print "\nEnter lines ('.' by itself to quit).\n"
    #用户输入文件内容,一次一行,遇到.号终止
	while True:
		entry = raw_input('Whatever you want to say: ')
		if entry == '.':
			break
		else:
			all.append(entry)
	#以写操作打开文件,将用户输入逐行写入文件	
	fobj = open(fname, 'w')
	fobj.writelines(['%s%s' % (x, ls) for x in all])
	fobj.close()
	print 'DONE'
3-9.Windows系统
>>> import os
>>> os.linesep
'\r\n'

暂无其他系统

3-10.(a).

# -*- coding: utf-8 -*-
#导入os模块
import os


#将os.linesep赋值给ls
ls = os.linesep
while 1:
	fname = raw_input('Enter a name')
	try:
		fobj = open(fname, 'a')
	except IOError, e:
		print "file open error"
	else:
		break
#建立一个空的列表		
all = []
print "\nEnter lines ('.' by itself to quit).\n"
#用户输入文件内容,一次一行,遇到.号终止
while True:
	entry = raw_input('Whatever you want to say: ')
	if entry == '.':
		break
	else:
		all.append(entry)
#以写操作打开文件,将用户输入逐行写入文件	
fobj = open(fname, 'w')
fobj.writelines(['%s%s' % (x, ls) for x in all])
fobj.close()
print 'DONE'