""" """ #电脑并不是通过编程来玩游戏的,他们只是通过玩游戏来学习。 """ 检查特定值是否包含在列表中: 例如,结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中。 在地图程序中,可能需要检查用户提交的位置是否包含在一直位置列表中。 使用关键字in。 """ """ 还有些时候,确定特定的值未包含在列表中,使用关键字not in。 例如,有一个列表,其中包含被禁止在论坛上发表评论的用户,就可在允许用户提交评论前 检查他是否被禁言。 """ """ Python只执行if-elif-else结构中的一个代码块。条件测试通过后,Python将执行紧跟 在他后面的代码块,并跳过余下测试。 """ """ Python并不要求if-elif结构后必须要有else代码块。在有些情况下,else代码块很有用, 而在其他一些情况下,使用一条elif语句来处理特定的情形更清晰。 """ """ else是一条包罗万象的语句,只要不满足if或elif中的条件测试,其中的代码就会执行, 这个能回引入无效甚至恶意的数据。如果知道最终要测试的条件。应考虑使用一个elif代码块 来代替else代码块。这样就会确定,即囊满足相应的条件是,你的代码才会执行。 """ """ 循环和if条件语句结合起来使用时,(需要排查条件是否符合)应将需特殊处理的if情况放在代码块 最前面。 """ # list_0 = [] # if list_0 != None: """ if条件语句只能容纳布尔值,Python将在列表至少包含一个元素时返回Ture,并在列表为空时返回False """ """ Python字典能够将数据关联起来,字典可存储的信息量几乎不受限制字典可以为任何真实物体建模 """ """ 使用键来访问与之相关联的值,与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python 对象用作字典中的值。 """ """ 指定键时,Python将返回与之相关联的值。 要获取与键相关联的值,依次指定字典名和放在方括号内的键。 """ """ 字典是一种动态结构,可依次指定字典名、用方括号括起的键和相关联的值。 """ alien_0 = {'color':'green','points':5} del alien_0['points'] print(alien_0) """ del是语句,和if一样,后面加空格 """ favorite_languages = { 'jen':'python', 'sarah':'C', 'edward':'ruby', 'phil':'python' } print("Sarah's favorite language is" + favorite_languages['sarah'].title()+ ".") """ Python支持对字典遍历,字典可用于以各种方式存储信息,因此有多种遍历字典的方式: 可遍历字典的所有键-值对、键或值。 """ user_0 = { 'username':'efermi', 'first':'enrico', 'last':'fermi' } for key,value in user_0.items(): print("\nKey: "+key) print("Value: "+value) print("--------------------------------------") """ 要编写用于遍历字典的for循环,可声明两个变量,用于储存键-值对中的键和值。 对于这两个变量,可使用任何名称。 """ for k,v in user_0.items(): print(k,v) """ >>> username efermi first enrico last fermi """ """ for语句的第二部分包含字典名和方法items()---dict专属方法,他返回一个键-值对列表。接下来,for 循环依次将每个键-值对存储到指定的两个变量中。使用这两个变量来打印每个键机器相关联的值。 """ """ 即便遍历字典时,键-值对的返回顺序也与存储顺序不同。Python不关心键-值对的存储顺序,而只跟踪键和值的关联联系。 """ """ 在不需要使用字典中的值时,方法keys()很有用。 """
#1~100的和 sum = 0 quotient = 0 for number in range(1,101): sum = number * 2 + 1 quotient = sum / 2 print(sum) print(quotient) #所有数的乘积: product = 1 for number in range(1,101): product *= number print(product) #1~100能整除3的数的和: sum = 0 for number in range(1,101): if number % 3 == 0: sum += number print(sum) print("---------------------") #1~100不能被7整除的数的和: sum = 0 for number in range(1,101): if number % 7 != 0: sum += number print(sum) print("----------------------") #所有偶数和: sum = 0 for number in range(2,101,2): sum += number print(sum) #for循环嵌套打印正方形 for row in range(5): # print("*",end = ' ')#横着打印5个* for column in range(5): print("*",end = " ") print() #for循环嵌套打印三角形: #打印三排 #最后一排3+2 #空格第一排:2 #空格第二排:1 """ 一共3排,空格n-1 """ n = 3 for i in (1,n+1): for j in (1,10): if n == 0: break print(" "*n+"*"*(j*2-1),end = "\n") n -= 1
#切片 list_foo = [1,2,3,4,5,6,7] list_first3 = list_foo[:3] list_last3 = list_foo[-3:] print(list_first3) print(list_last3) print(len(list_foo)) print(list_foo[2:-2]) list_1 = ["sarah",123,345,677] name,*numbers = list_1 print(name) print(numbers) """ 列表拼接:会自动排序吗?不会 """ """ pop.()有返回值 pop(0,1,2,3)取指定值,索引无方括号 """ #递归:高斯 def gaussian_sum(n): if n == 1:#特殊情况 return 1 else: return n + gaussian_sum(n-1) print(gaussian_sum(100)) print("---------------------------------") #创建一个列表存储学生的成绩,将列表中乘积低于60分的取出来放入另外一个空的列表: # list_all_score = [100,30,50,89,99,88,52,40] # below_the_mark = [] # v =len(list_all_score) # a = 0 # for score in list_all_score: # if score < 60: # list_all_score.pop(a) # below_the_mark.append(score) # v -= 1 # print(below_the_mark) """ wrong """ # low_scores = [] # xs = list(range(0,len(list_all_score))) # for x in xs:#依次获取索引值 # score = list_all_score[x]#通过索引拿到对应的元素 # if score < 60: # list_all_score.pop(x) # low_scores.append(list_all_score.pop(x)) # xs.pop() """ wrong """ list_all_score = [100,30,50,89,99,88,52,40] below_the_mark = [] for score in list_all_score: index = list_all_score.index(score) print(index) if score < 60: below_the_mark.append(score) list_all_score.pop(index) print(list_all_score) print(below_the_mark) """ wrong,index方法只能返回第一个匹配项的索引位置 """ """ 列表是栈结构 """ """ 组织列表 .sort() 升序 .sort(reverse = True) 降序 .sorted()... .reverse() """ # import heapq # heapq.nlargest()#找出列表中最大的n个数 arguments:(n,listname),以列表形式返回 # heapq.nsmallest() """ heapq模块方法 """ #遍历字典: """ 在不需要使用字典中的值时,方法keys()很有用。 """ favorite_languages = { 'jen':'python', 'sarah':'c', 'edward':'ruby', 'phil':'python', } for name in favorite_languages.keys(): print(name.title()) """ >>> Jen Sarah Edward Phil """ """ 遍历字典时,会默认遍历所有的键 """ for name in favorite_languages: print(name.title()) """ >>> Jen Sarah Edward Phil """ # friends = ['phil','sarah'] # for name in favorite_languages.keys(): # print(name.title()) # if name in friends #异常处理: # while True: # inputStr = input("Pleae input a number:") # try: # num = float(inputStr) # print("input number:",num) # print("result:",10/num) # exceptValueError: # print("illegal input.Try again.") # exceptZeo """ 对于运行时可能产生的错误,我们可以提前在程序中处理。这样做有两个可能的目的: 一个是让程序中止前进行更多的操作,比如提供更多的关于错误的信息。另一个则 是让程序在犯错后依然能运行下去。 异常处理还可以提高程序的容错性。 """ """ 异常处理完整的语法形式为: try: ... except exception1: ... except exception2: ... else: ... finally: ... 无论是否有异常,最后都要做的一些事情。 """ # while True: # inputStr = input("Please input a number:") # try: # num = float(inputStr) # print("Input number:",num) # print("result:",10/num) # except: # print("something wrong.try again") #面向对象: """ 类和对象同样提高了程序的可复用性。除此之外,类和对象这两种语法结构还 加强了程序模拟真实世界的能力。"模拟",正式面向对象编程的核心。 """ """ 尽管在定义类的方法时,我们必须加上self这个参数,但self只能用在类定义的内部, 所以在调用方法时不需要对self传入数据。 """ """ 描述对象的数据都存储于类的属性中,类属性描述了一个类的共性,所有属于该类的对象 会共享这些属性。 """ class Bird(object): def chirp(self,sound): print(sound) def set_color(self,color): self.color = color summer = Bird() summer.set_color("yellow") print(summer.color) """ 为了完整描述个体,除了共性的类属性外,还需要用于说明个性的对象属性。在类中,可以通过 self来操作对象的属性。进行属性拓展。 """ """ 在方法set_color()中,通过self参数设定了对象的属性color。和类属性一样,能通过对象, 属性的方式来操作对象属性。由于对象属性 """
# 已知一个列表,求列表中心元素 list_0 = [1,2,3,4,5,6,7,8,9] number = len(list_0) element_center_position = int(number/2) center_element = list_0[element_center_position] print(center_element) #已知一个列表,求所有元素和: list_0 = [1,2,3,4,5,6,7,8,9] sum = 0 for element in list_0: sum += element print(sum) #已知一个列表,输出所有奇数下标元素: list_0 = [1,2,3,4,5,6,7,8,9] print(list_0[::2]) """ 注 """ print("----------------------------") #已知一个列表,输出所有元素中,值为奇数的: list_0 = [1,2,3,4,5,6,7,8,9] for element in list_0: if element%2 != 0: print(element) #已知一个列表,将所有元素乘以2: list_1 = [v * 2 for v in list_0] print(list_1) #已知一个列表,将所有元素加到第一个元素中: #已知一个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中: listA = [1,2,3,4,5,6,7,8,9] listB = listA[::2] print(listB) listC = listA[1::2] print(listC) #把A列表的前5个元素复制到B列表中 listB = listA[:5] print(listB) #把1~36分别放入列表中,计算列表数组对焦元素之和,6*6的列表 list_metamorphic = [] for i in range(1,7): for j in range(1,7): print(i * j,end = ' ') list_metamorphic.append(i * j) print() print(list_metamorphic) print(list_metamorphic[0]+list_metamorphic[-1]) print(list_metamorphic[5]+list_metamorphic[-6]) #有一个长度是10的列表,列表内有10个不重复的数字,要求从大到小排序: listA = [1,2,3,4,5,6,7,8,9,10] print(len(listA)) listA.sort() print(listA) # # #有一个长度是10的列表,要求删除某一位置的元素 # position = int(input("Please enter a number position: ")) # listA = [1,2,3,4,5,6,7,8,9,10] # if 0 <= position <= 9: # listA.remove(position) # print(listA) # #有一个长度是10的列表,按递增排列,用户输入一个数,插入适当位置: # listA = [1,2,3,4,5,6,7,8,9,10] # given_number = int(input("Please give us a number: ")) # (listA.append(given_number)).sort()#inser()无返回值,相当于一条语句,append()无返回值 # print(listA) #有一个长度是10的列表,数组内有10个人名,要求去掉重复的 name_list = ["sarah",'edward','bella','christin','bella','sarah','john','sheldon','baby','angela'] list_sorted = [] for name in name_list: if name not in list_sorted: list_sorted.append(name) """ 成员运算符在判断是否重复是非常有用 """ print(list_sorted) print("--------------------") #把A列表的第三到第六为之间的元素删除: listA = [1,2,3,4,5,6,7,8,9,10] list_first = listA[:3] list_last = listA[7:] listB = list_first+list_last print(listB) print("--------------------") #已知A列表,B列表,定义一个列表C,要求C包含A,B数组中的数据(无重复值) listA = [1,2,3,4,5,6,7,8,9,10] listB = [1,2,3,4,5,6] listC = listA + listB listD = [] for element in listC: if element not in listD: listD.append(element) print(listD)
""" 列表副本: """ #method N.1: list_0 = [1,2,3,4,5,6] list_1 = list_0[:] print(list_1) #method N.2: list_0 = [1,2,3,4,5,6] list_2 = list_0.copy() print(list_2) list_3 = [0,0,0] list_0 = list_0 + list_3 print(list_0) print(list_2) ''' 函数解包裹运用于列表: *表示不定长参数;逗号分隔 ''' numbers = ["yuting",123,34,67,34,89,23,67,"girl"] name,*scores = numbers print(name) print(scores) name,scores,*sex = numbers print(name) print(scores) print(sex)
#打印三排三角形: n = 3 m = 3 print("--------------") while True: for i in range(1,m+1): if n == 0: break l = i * 2 - 1 print(" "*n,"*"*l) print() n -= 1
""" 元组: 如果有一个大小不应该变的矩形,可将其长度和宽度存储在一个元组中,从而确保他们是不能修改的 """ dimensions = (200,50) print(dimensions[0]) print(dimensions[1]) # dimensions[0]= 250 # print(dimensions[0]) """ >>> TypeError: 'tuple' object does not support item assignment """ for dimension in dimensions: print(dimension) """ 修改元素变量: 虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如要修改元素,可重新定义整个元组: """ dimensions = (200,50) print("Original dimensions: ") for dimension in dimensions: print(dimension) dimensions = (400,100) print("\nModified dimensions:") for dimension in dimensions: print(dimension)