第15题 依次输出列表的元素和下标

	列表languages = ['Python', 'Java', 'HTML', 'JavaScript'],如何依次打印列表中每个元素的下标和元素值?

解析:enumerate()可以返回数组的(下标index,数值item)数据对,再用for循环依次取出数据对。

languages = ['Python', 'C', 'Java', 'HTML']
for index, item in enumerate(languages):
    print(index, item)

第16题 编写加速度函数

	创建函数,计算加速度,初始和结束的速度为v1和v2,初始和结束的时间为t1和t2,加速度公式如下:g = (v2 - v1) / (t2 - t1)。

解析:该函数有四个参数,分别为v1、v2、t1、t2,在函数体内实现计算并返回计算得到的结果。

def func(v1, v2, t1, t2):
    g = (v2 - v1) / (t2 - t1)
    return g

print(func(0, 20 , 0 ,50))

第17题 编写函数计算球的体积

解析:计算球体的体积的公式是V = (4/3)πr³,而π的值可以调用python的内置模块math的pi属性获取。

import math

def volume(r):
    return (4 * math.pi * r**3) / 3

print(volume(2))

第18题 函数默认值参数

	以下函数哪里有错误?
	def add(i=2, j):
		return i + j

解析:以上函数会如下错误:non-default argument follows default argument,意思是不带默认值的参数跟在了有默认值的参数后面。带默认值的参数,应该放到后面,这样的话,如果只传1个参数,才能达到使用默认值参数的效果。所以应该修改如下:

def add(j, i=2):
    return i + j
print(add(3))
print(add(4,3))

结果分别是5和7

第19题 全局变量

	如下函数输出的结果是:
	i = 5
	def func():
		return i
	i = 7
	print(func())

解析:python的代码是从上往下一行一行执行的,而创建的函数,只是被定义,在没有调用的时候并不会被执行,所以执行到i = 7是,全局变量i被更新为了7,这时候再调用func函数,返回的i是更新之后的7,所以结果是7。

第20题 局部变量

		j = 5
		def func():
			 j = 10
			 return j
		j = 8
		print(func())

解析:函数内可以访问函数外的全局变量,但是局部变量的优先级更高。所以无论全局变量j是多少,当调用func函数时,都会返回局部变量j的值10。

第21题 字符串格式化

	以下代码错在哪里?
	name = 'zhangsan'
	country = 'China'
	print("%s is from %s" % name, country)		

解析:以上代码会报错:not enough arguments for format string,意思是格式化字符串没有足够的参数。每个%占位符,在后面的%需要一个变量对应起来,如果多于一个占位符,后面的%之后需要跟一个元组tuple包含多个变量,所以需要用(name, country)元组。

name = 'zhangsan'
country = 'China'
print("%s is from %s" % (name, country))

第22题 字符串格式化(二)

解析:第21题的代码还可以用f-string的格式化方法,而且这种方法目前也更常用,个人感觉也更加方便,代码如下:

name = 'zhangsan'
country = 'China'
print(f"{name} is from {country}")

第23题 字符串分隔

	现有字符串string = "xiaoming is 9 years old, he is from china. He likes reading",如何对该字符串使用英文的逗号,句号和空格进行分隔?

解析:可以使用re模块的split()方法进行分隔,代码如下:

import re
string = "xiaoming is 9 years old, he is from china. He likes reading"
string = re.split(',| |\.', string)
04-11 13:41