坚持十天做完Python入门编程100题第三天
第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)