python编程16章_Python编程练习第16-20课,python,小,甲鱼,1620

1.将可迭代对象转化为列表,元组,字符串的内置函数

list() tuple() str()

2.区分reverse()和reversed(),为什么用法不一样

reverse()是python中列表的一个内置函数,用于将列表中的数据翻转

reversed(list)是python自带的一个方法,也就是一个类,返回的是一个将序列翻转后的迭代器,需要遍历

list1 = [1,2,3]

list1.reverse()#对列表list1翻转,无返回值

print(list1)#[3,2,1]

print(reversed(list1))#类型变成迭代器

3.几个迭代器函数

list1 = [1,2,3]

for each in reversed(list1):

print(each,end = ' ')#3 2 1

zip()依次返回各个参数组成的元组

list1 = [1,3,5,7,9]

list2 = [2,4,6,8,10]

for each in zip(list1, list2):

print(each)

(1, 2)

(3, 4)

(5, 6)

(7, 8)

(9, 10)

enumerate():枚举,生成由每个元素索引值和元素组成的元组

str1 = "abcd"

for each in enumerate(str1):

print(each)

(0, 'a')

(1, 'b')

(2, 'c')

(3, 'd')

4.python3的print()相关

print(*objects, sep=’ ‘, end=’\n’)

objects – 输出对象

sep --用来间隔多个对象,默认值是一个空格,可改变。

end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。

输出默认换行,想要不换行可以设置 end =’’ end =’ ’ end =’,'等

a = [1,2,3,4]

for each in a:

print(each)#默认换行输出

for each in a:

print(each,end = '')#不换行无间隔输出1234

print()#print起换行作用

for each in a:

print(each,end = ' ')#不换行间隔输出1 2 3 4

for each in a:

print(each,end = ',')#不换行以,间隔输出1,2,3,4

#间隔符设置

str1 = 'I';str2 = 'love';str3 = 'you'

print(str1,str2,str3,sep='.')#I.love.you

5.编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值

def power(x,y):

num = x ** y

return num

print(power(2,2))

6.编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数

def gcd(x,y):

if x >= y:

if x % y == 0:

return y

else:

return 1

elif y % x == 0:

return x

else:

return 1

print(gcd(6,12))

7.编写一个将十进制转换为二进制的函数,要求采用“除2取余”的方式,结果与调用bin()一样返回字符串形式

def DectoBin(num):

temp = []

result = ''#空字符串

while num:

x = num % 2 #除2取余,逆序排列

num = num // 2 #floor除

temp.append(x)#在列表末尾添加元素

while temp:

result += str(temp.pop())#pop([index=-1])移出列表中的一个元素,默认最后一个元素,并且返回该元素的值

return result

print(DectoBin(30))

8.关键字参数,函数在调用的时候,带上参数的名字去指定具体调用的是哪个参数

def SaySome(name, words):

print(name + '->' + words)

SaySome(words='让编程改变世界!', name='小甲鱼')

9.使用help()查看函数的参数

print(help(print))

Help on built-in function print in module builtins:

print(...)

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.

None

10.编写一个符合以下要求的函数:

(a) 计算打印所有参数的和乘以基数(base=3)的结果

(b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。

注:

函数参数前* 和**,都是用来将任意个数的参数导入到python函数中,* 表示以元组的形式导入参数,** 表示以字典的形式导入参数

字典形式d = {key1 : value1, key2 : value2 }

def sum(*params,base=3):#基数默认值3

result = 0

for i in params:

result += i

result *= base

print('结果为:', result)

sum(1, 2, 3, 4, 5)

sum(1, 2, 3, 4, 5, base=5)

11.题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 =1^3 + 5^3 + 3^3 ,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。

def shuixianhua():

print('水仙花数为:',end = '')

for i in range(100,1000):

baiwei = i // 100

shiwei = (i // 10)%10

gewei = i % 10

a = baiwei ** 3 + shiwei ** 3 +gewei ** 3

if a == i:

print(a,end = ' ')

shuixianhua()

print()

12.编写一个函数findstr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为"You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.",子字符串为"im",函数执行后打印“子字母串在目标字符串中共出现3次”。

def findstr():

mu = input('请输入字符串:')

zi = input('请输入子字符串:')

count = 0

if zi not in mu:

print('未在目标字符串中找到子字符串')

else:

for i in range(len(mu)):

if zi[0]==mu[i] and zi[1]==mu[i+1]:

count += 1

print('子字符串在目标字符串中共出现 %d 次' %count)#参数格式化输出整数

findstr()

13.编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)

def huiwen():

str1 = input('请输入字符串:')

list1 = list(str1)

list2 = list(reversed(list1))

if list1 == list2:

print(str1,'是回文联')

else:

print(str1,'不是回文联')

huiwen()

14.编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数

def tongji(*param):#以元组的形式导入字符串

length = len(param)

for i in range(length):

count_word ,count_num,count_spa,count_oth= 0,0,0,0

for j in param[i]:

if j.isalpha():#检测字符串是否由字母组成

count_word += 1

elif j.isspace():

count_spa += 1

elif j.isdigit():

count_num += 1

else:

count_oth += 1

print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个'

% (i + 1, count_word, count_num, count_spa, count_oth))

tongji('I love you123', 'I love you', 'iloveyou123')

#第 1 个字符串共有:英文字母 8 个,数字 3 个,空格 2 个,其他字符 0 个

#第 2 个字符串共有:英文字母 8 个,数字 0 个,空格 2 个,其他字符 0 个

#第 3 个字符串共有:英文字母 8 个,数字 3 个,空格 0 个,其他字符 0 个

你可能感兴趣的:(python编程16章)