2018.5.13_Monday

"""

"""
#电脑并不是通过编程来玩游戏的,他们只是通过玩游戏来学习。
"""
检查特定值是否包含在列表中:
例如,结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中。
在地图程序中,可能需要检查用户提交的位置是否包含在一直位置列表中。
使用关键字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)
    


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值