Python 阶段综合练习一

  综合之前的函数、数据结构、流程控制等,做以下实例练习:(建议先不要看代码,自己先试着写;代码仅供参考,有多种实现方法)

  1. 定义 is_Even 函数,传一 int 参数,判断是否是偶数,return True;不是,return False

 '''is_Even'''
def is_Even(i):
if(i%2==0):
return True
else:
return False
print(is_Even(0),is_Even(1),is_Even(1))

is_Even

  2. 定义 is_Int 函数,传一 float 参数,判断是否是整数(如1.0 即整数),return True;不是,return False

 '''is_Int'''
def is_Int(f):
if(f%1==0):
return True
else:
return False
print(is_Int(0),is_Int(1.0),is_Int(1.1))

is_Int'

  3. 定义 digital_sum 函数,传一 int 参数,return 其所有位数的数字相加的和;如:1234 返回 10(1+2+3+4); 900 返回 9 (9+0+0)

 '''digital_sum'''
def digital_sum(i):
sum = 0
while(i/10>1):
sum += i%10
i = int(i/10)
sum += i
return sum
print(digital_sum(23423),digital_sum(900),digital_sum(0))

digital_sum 1

 def digital_sum(i):
i = str(i)
sum = 0
for d in i:
sum += int(d)
return sum
print(digital_sum(23423),digital_sum(900),digital_sum(0))

digital_sum 2

  4. 定义 factorial 函数,传一 int 参数,return 其所有位数数字相乘的积;如:1234 返回 24 (1*2*3*4); 909 返回 0 (9*0*9)

 '''factorial'''
def factorial(i):
result = 1
while(i/10>1):
result *= i%10
i = int(i/10)
result *= i
return result
print(factorial(1234),factorial(909),factorial(0))

factorial 1

 '''factorial'''
def factorial(i):
i = str(i)
result = 1
for d in i:
result *= int(d)
return result
print(factorial(1234),factorial(909),factorial(0))

factorial 2

  5. 定义 is_prime 函数,传一 int 参数,判断是否是质数(仅可被1或自己整除),若是,return True;不是,return False; 如:1 返回 True;2 返回 True;4 返回 False;13 返回 True

    规定 0 不是质数,返回 False

 '''is_prime'''
def is_prime(i):
result = True
for d in range(2,i):
if(i%d==0):
result = False
break
if(i==0):
result = False
return result
print(is_prime(1),is_prime(2),is_prime(3),is_prime(4),is_prime(13),is_prime(197),is_prime(201),is_prime(0))

is_prime

  6. 定义 reverse 函数,传一 str 参数,将所有字符串字符倒置并 return 该字符串;如:"abcd" return "dcba"

   备注:list.reverse() 及 list[::-1] 可表示 list 倒置

 '''reverse'''
def reverse(s):
l = list(s)
new_l = []
for i in range(len(l)-1,-1,-1):
new_l.append(l[i])
return "".join(new_l)
print(reverse("ab cd"),reverse(""))

reverse 1

'''reverse'''
def reverse(s):
l = list(s)
l.reverse() # l = l[::-1]
return "".join(l)
print(reverse("ab cd"),reverse(""))

reverse 2

  7. 定义 anti_vowel 函数,传一 str 参数,将字符串中所有的元音(a e i o u) 去除(注意大小写),并return;

   如:"Apple is red."  return  "ppl is rd."

   备注:对于list,for item in list_name 即可遍历list,可以不用下标的方式,参见下方的两种方式(之后的例子也列出了两种方式)

 '''anti_vowel 1'''
def anti_vowel(s):
l = list(s)
new_l = []
for i in range(len(l)):
if (l[i] not in {'a','e','i','o','u','A','E','I','O','U'}):
new_l.append(l[i])
return "".join(new_l)
print(anti_vowel("Apple is red."))

anti_vowel 1

 '''anti_vowel 2'''
def anti_vowel(s):
l = list(s)
new_l = []
for letter in l:
if (letter not in {'a','e','i','o','u','A','E','I','O','U'}):
new_l.append(letter)
return "".join(new_l)
print(anti_vowel("Apple is red."))

anti_vowel 2

  8. 定义 scrabble_score 函数,传一 str 参数。预设一组词典(见下方引用),根据词典中字母对应的数值,将传入参数的每个字母数值相加

  (非字母不加,注意大小写转换);如:"Word !"  分别对应取 "w": 4 , "o": 1, "r": 1,"d": 2 , 相加为 4+1+1+2 = 8  return 该值

score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, "x": 8, "z": 10}

 '''scrabble_score 1'''
def scrabble_score(s):
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, "x": 8, "z": 10}
l = list(s)
sum = 0
for i in range(len(l)):
letter = l[i].lower()
if letter in score.keys():
sum += score[letter]
return sum
print(scrabble_score("Word !"),scrabble_score("Hello World~!"))

scrabble_score 1

 '''scrabble_score 2'''
def scrabble_score(s):
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, "x": 8, "z": 10}
l = list(s)
sum = 0
for letter in l:
letter = letter.lower()
if letter in score.keys():
sum += score[letter]
return sum
print(scrabble_score("Word !"),scrabble_score("Hello World~!"))

scrabble_score 2

  9. 定义 censor 函数,传两个 str 参数:s, h;若 s 字符串中的单词包含 h(全小写)时(不区分大小写,暂时仅考虑空格分隔的单词),

   将其隐藏,每个隐藏的字母显示为 *;该方法为不完善的隐藏字符方法,如隐藏字符后有标点,则仍会显示。(若需完善,可用正则表达式,后续学习)

     如:censor("Fuck U fuck ... ","fuck")  会 return 字符串为 "**** U **** ... "  ;

       censor("My qq is: 1000100, pls add my QQ","qq")  会 return 字符串为 "My ** is: 1000100, pls add my **"

     备注: str.split(" ") 可根据 " " 分隔字符串并返回为list; 字符串相乘,如 "*"*5 可输出 "*****"

 '''censor 1'''
def censor(s,h):
l = s.split(" ")
new_l = []
for i in range(len(l)):
word_l = l[i].lower()
if word_l==h:
new_l.append("*"*len(h))
else:
new_l.append(l[i])
return " ".join(new_l)
print(censor("Fuck U fuck ... ","fuck"))
print(censor("My qq is: 1000100, pls add my QQ","qq"))

censor 1

 '''censor 2'''
def censor(s,h):
l = s.split(" ")
new_l = []
for word in l:
if word.lower()==h:
new_l.append("*"*len(h))
else:
new_l.append(word)
return " ".join(new_l)
print(censor("Fuck U fuck ... ","fuck"))
print(censor("My qq is: 1000100, pls add my QQ","qq"))

censor 2

  10. 定义 count_i 函数,传两个参数 l, item:l 为一 list,item 为任意类型元素;return l 中包含 i 的个数 ;

    如: count_i([1,2,3,4,2,1,3,1.0,"1"],1)         会 return 3    (1.0 也可算入;"1" 不可算入)

       count_i(["b","a","ab","a","","A"], "a")     会 return 2

      count_i([["a"],"a"], ["a"])  会 return 1;  count_i([["a"],"a"], ["a "])    会 return 0

 '''count_item 1'''
def count_item(l,item):
count = 0
for i in range(len(l)):
if(l[i]==item):
count += 1
return count
print(count_item([1,2,3,4,2,1,3,1.0,""],1))
print(count_item(["b","a","ab","a","","A"], "a"))
print(count_item([["a"],"a"], ["a"]),count_item([["a"],"a"], ["a "]))

count_item 1

 '''count_item 2'''
def count_item(l,i):
count = 0
for item in l:
if(item==i):
count += 1
return count
print(count_item([1,2,3,4,2,1,3,1.0,""],1))
print(count_item(["b","a","ab","a","","A"], "a"))
print(count_item([["a"],"a"], ["a"]),count_item([["a"],"a"], ["a "]))

count_item 2

  11. 定义 purify 函数,传一 list 参数;去除该 list 中所有的奇数(该list中全为int元素)

    如: purify([3,1,5,2,6,1,4])  会 return [2,6,4]

 '''purify 1'''
def purify(l):
l_new = []
for i in range(len(l)):
if(l[i]%2==0):
l_new.append(l[i])
return l_new
print(purify([3,1,5,2,6,1,4]))

purify 1

 '''purify 2'''
def purify(l):
l_new = []
for i in l:
if(i%2==0):
l_new.append(i)
return l_new
print(purify([3,1,5,2,6,1,4]))

purify 2

  12. 定义 multiple 函数,传可变参数(该参数全为float),return 所有可变参数相乘的积,无参数则返回 None;

    如:multiple(3,2) return 6;multiple(3.5,2) return 7.0;multiple(3.5,2,3) return 21.0;multiple(3,2,0,3,) return 0;

    备注:函数调用可变个数的参数,在其参数名前加*,如*args,这些参数将被包装进一个元组

 '''multiple 1'''
def multiple(*f):
m = 1
if(len(f)==0):
return None
else:
for i in range(len(f)):
m *= f[i]
return m
print(multiple(2,3),multiple(3.5,2),multiple(3.5,2,3),multiple())

multiple 1

 '''multiple 2'''
def multiple(*f):
m = 1
if(len(f)==0):
return None
else:
for i in f:
m *= i
return m
print(multiple(2,3),multiple(3.5,2),multiple(3.5,2,3),multiple())

multiple 2

  13. 定义 remove_duplicate 函数,传一参数 list,删除 list 中重复的项;

    如 remove_duplicate([1,2,3,1.0,1,"1"]) return [1,2,3,"1"]

     备注:可用转换为集合set 来去重,但无法保留 list 之前的顺序

 '''remove_duplicate 1'''
def remove_duplicate(l):
l_new = []
for i in range(len(l)):
if l[i] not in l_new:
l_new.append(l[i])
return l_new
print(remove_duplicate([1,2,3,1.0,1,""]))

remove_duplicate 1

 '''remove_duplicate 2'''
def remove_duplicate(l):
l_new = []
for i in l:
if i not in l_new:
l_new.append(i)
return l_new
print(remove_duplicate([1,2,3,1.0,1,""]))

remove_duplicate 2

 '''remove_duplicate 3'''
def remove_duplicate(l):
return list(set(l))
print(remove_duplicate([1,2,3,1.0,1,""]))

remove_duplicate 3

  14. 定义 median 函数,传一参数 list,该 list 中元素均为float或int数值;

    若 list 长度为奇数,return 该list 最中间的数;若 list 长度为偶数,return 该 list 最中间两个数的平均数;若 list 为空,return none

    如 median([3,4,2]) return 3; median([7,2,3,4]) return 3.5  (3+4/2)

     备注:须先对 list 排序,用 sorted(list_name)

 '''median'''
def median(l):
l = sorted(l)
l_len = len(l)
if l_len == 0:
return None
elif l_len%2 == 1:
return l[int((l_len-1)/2)]
else:
return (l[int((l_len)/2)] + l[int((l_len)/2)-1])/2
print(median([]),median([3,4,2]),median([7,2,3,4]))

median

Python学习 —— 阶段综合练习一的更多相关文章

  1. Python学习 —— 阶段综合练习三

    Python学习 —— 阶段综合练习三 综合之前文件与文件夹操作的学习,做以下实例练习:(建议先不要看代码,自己先试着写:代码仅供参考,有多种实现方法) 1. 目录文件遍历(二层目录结构) 1).  ...

  2. Python学习 —— 阶段综合练习二

    综合之前的类的学习,做以下实例练习:(建议先不要看代码,自己先试着写:代码仅供参考,有多种实现方法) 1. Triangle  & Equilateral 1). 创建class Triang ...

  3. Python学习的十个阶段,学完神功大成,对应一下看看你自己在哪个阶段

    大家好,我是白云. 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. 阶段一:Python基础[ 初入江湖] Linux基础 目标: ...

  4. 优秀Python学习资源收集汇总(强烈推荐)

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  5. [转]优秀Python学习资源收集汇总

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  6. Python之路【第二十四篇】:Python学习路径及练手项目合集

      Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...

  7. python 学习资料

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  8. 优秀Python学习资源

    优秀Python学习资源收集汇总(强烈推荐)   Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮 ...

  9. python学习: 优秀Python学习资源收集汇总--转

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

随机推荐

  1. **CodeIgniter通过hook的方式实现简单的权限控制

    根据自己的实际情况,需要两个文件,一个是权限控制类,Acl,另外一个是权限配置的文件acl.php放在了config这个目录下. Acl这个类放在了application/hook/acl.php.通 ...

  2. iOS客户端学习之AES加密

    数据加密在解密在软件开发过程中举足轻重的作用,可能有的公司在加密的时候有自己公司内部一套设计的算法,而在这方面不想浪费太大精力就可以去考虑使用第三方提供的加密算法,如AES加密算法,本篇内容介绍开源中 ...

  3. python collections模块详解

    参考老顽童博客,他写的很详细,例子也很容易操作和理解. 1.模块简介 collections包含了一些特殊的容器,针对Python内置的容器,例如list.dict.set和tuple,提供了另一种选 ...

  4. bzoj 1452 二维树状数组

    #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...

  5. 使用注解配置SQL映射器

    在上一章,我们看到了我们是怎样在映射器Mapper XML配置文件中配置映射语句的.MyBatis也支持使用注解来配置映射语句.当我们使用基于注解的映射器接口时,我们不再需要在XML配置文件中配置了. ...

  6. 四 Python基础

    Python是一种计算机编程语言.计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能 ...

  7. 【WPF】生成二维码

    第一步,下载Google的ZXing类库,以便引用: BitMatrix bitMatrix; private void Button_Click_1(object sender, RoutedEve ...

  8. Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质

    Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质 创建部分光滑部分粗糙的材质 生活中,有类物体的表面既有光滑的部分,又有粗糙的部分,例如丽江的石板路,如图3-17所示,石板的表面本来是粗糙的, ...

  9. os.path.dirname(__file__)使用

    os.path.dirname(__file__)使用 该测试脚本所在的位置:D:\第1层\第2层\第3层\第4层\第5层\test11.py test11.py import os #该文件所在位置 ...

  10. GC参数

    串行收集器 串行收集器(Serial),是一个相对比较老的回收器,但是它的效率在回收器中相对较好,并且比较稳定.他在进行垃圾回收的过程中,使得应用暂时被挂起,然后启用单条线程去做垃圾回收,所以在进行垃 ...