50个例子学Python(一)
目录
demo1-输入输出
demo2-布尔变量
demo3-变量
demo4-字符串格式化
demo5-列表
demo6-元组
demo9-字典与集合
demo10-可变对象与不可变对象
demo1-输入输出
#demo-1
#输入输出
#print函数参数
#转义字符
#正数 浮点数 字符串
name = input("Please enter your name:")
print("hello,",name)
print("2**10 =",2**10) #注意:print函数的逗号默认为一个空格,这是因为sep参数默认为空格
print("2**10=",2**10,sep="")#因此可以将sep参数设置为""
print(2**5) #正数
print(3.1415926)#浮点数:IEEE754 浮点数的存储不精确
print("hello world") #打印字符串:字符串可以用单引号也可以用双引号,每个pritn后默认换行
print("hello ",end="") #注意:可以将end参数设置为"",这样就不会换行
print("world")
print("i'm ok")#""中含有'
print('i" ok')#''中含有“
print("i\' \"ok\"") #既有单引号与双引号 则使用转义字符\
print('\\\t\\')
print(r'\\\t\\')#r表示原生字符串,不转义,可以对比输出结果
demo2-布尔变量
#demo-2
#Bool变量
#注意大小写
#布尔值可以用and or not运算
#if语句
True
False
print(3>2)
print(3<2)
print("----and----")
print(True and True)
print(False and True)
print(True and False)
print(False and False)
print("----or----")
print(True or True)
print(False or True)
print(True or False)
print(False or False)
print("----not----")
print(not True)
print(not False)
#布尔值常用if结合使用
#if首先判断条件为True或者Fasle,然后执行相应语句
print("*"*20)#字符串还可以这样,使用*重复打印
age = 22
if age>0:
print("Positive")
elif age<0:
print("negative ")
else:
print("zeros")
print("*"*20)
demo3-变量
#demo-3
#变量
#变量名由大小写字母、数字和_组成,不能以数字开头
#变量赋值:对变量赋值x = y是把变量x指向真正的对象,该对象是变量y所指向的。随后对变量y的赋值不影响变量x的指向
#除法
"""getVar可以由int变为float,这是因为Python是动态语言,变量本身类型不固定
例如C或C++,变量声明或初始化时需要首先指定变量类型,且类型不可变
"""
getVar = 5 #驼峰命名法 # =为赋值,相当于在内存中创建了一个getVar的变量与5,并将getVar变量指向5
print(getVar)
getVar = 3.1415
print(getVar)
#两种写法均为将getVar加上5后再重新赋给getVar
getVar = getVar + 5
getVar += 5
print(getVar)
#把一个变量a赋值给另一个变量b,实际上是把变量b指向变量a所指向的数据
print("!!!重要!!!")
tempA = "tempValue" #此时tempA指向tempValue
tempB = tempA #此时tempB也指向tempValue
print(tempA,tempB)
tempA = "hello world" #此时tempA指向hello world,但tempB仍然指向tempValue
print(tempA,tempB)
print("\n*****除法*****")
print(10/3) #精确的除法
print(10//3)#地板除 向下取floor,只取整数部分
print(10%3) #mod求模得余数
demo4-字符串格式化
#demo-4
#字符串格式化
#爬虫中结构化的URL中常用
urlList = ["https://www.renrendai.com/loan-{}.html".format(i) for i in range(5)]
for eachList in urlList:
print(eachList)
testStr = "my name is {},my age is {}".format("zsl",999)
print(testStr)
#使用索引
testStr = "my name is {1},my age is {0}".format("zsl",999)
print(testStr)
demo5-列表
#demo-5
#列表list-有序集合
print("*****创建列表*****")
test = [10,3.1415,"a",["C","C++"],{"key":"value",}] #Python中的列表可以是不同类型
scoresList = [60,80,100]
print(test)
print(test[3][1]) #取列表中的列表
print(scoresList)
print("*****列表长度*****")
print(len(scoresList)) #列表长度
print("*****正向索引*****")
print(scoresList[0])#正向索引/从0开始
print(scoresList[1])
print(scoresList[2])
print("*****反向索引*****")
print(scoresList[-1])#反向索引:-1代表最后一个
print(scoresList[-2])#-2代表倒数第二个
print(scoresList[-3])#PS:若越界则报错
print("*****append追加*****")
print(scoresList)
scoresList.append(120)
print(scoresList)
print("*****insert插入*****")
print(scoresList)
scoresList.insert(0,0)#在索引为0处插入0
print(scoresList)
scoresList.insert(3,999)#在索引为0处插入0
print(scoresList)
print("*****pop删除*****")
print(scoresList)
scoresList.pop()#默认弹出最尾部元素
print(scoresList)
scoresList.pop(3) #弹出索引为0的元素
print(scoresList)
print("*****替换列表元素*****")
print(scoresList)
scoresList[0] = 9999
print(scoresList)
demo6-元组
#demo-6
#tuple元组
#tuple与list非常相似,但tuple一旦初始化后无法修改
scoresTuple = (60,80,100)
print(scoresTuple)
#初始化后无法修改,也无insert append pop等方法
#scoresTuple[0]=999 #T会报错ypeError: 'tuple' object does not support item assignment
#定义只有一个元素的tuple
oneTuple = (1)
print(oneTuple,type(oneTuple))
oneTuple = (1,) #需要加个, 因为()既可以生成tuple,也可以认为是表达式的小括号,有ambiguous
print(oneTuple,type(oneTuple))
print("****有趣的例子*****")
testTuple = (1,2,[3,4])
print(testTuple)
testTuple[2][0] = 666
testTuple[2][1] = 999
print(testTuple) #实质变的不是tuple,tuple始终指向两个整数一个列表,变的只是tuple中列表元素所指向的值
# testTuple[2] = [666,999] #这样则会报错,因为这是修改tuple所指向的元素,而tuple在初始化后就不能修改所指向的值
#demo-7
#条件判断
#if语句从上往下执行,如果有个判断语句为True,则执行相应语句
#往后的elif与else则忽略
#例如下面的if中,num也满足大于0,但不会输出statement2
#所以注意if语句中各个判断条件的顺序或者具体判断内容
num = 10
if num > 5:
print("statement1")
elif num > 0:
print("statement2")
else:
print("else")
boolValue = 4>3
if boolValue: #关键是只要判断内容是True则会执行
print("test")
#demo-8
#for循环
print("*****打印列表的每个值*****")
scoresLists = [0,60,80,100]
for eachScore in scoresLists:
print(eachScore)
print("*****求列表数字总和*****")
scoresLists = [0,60,80,100]
scoresSum = 0
for eachScore in scoresLists:
scoresSum += eachScore
print(scoresSum)
print("*****求1-100和*****")
mySum = 0
for each in range(1,101): #range(start,end)-左开右闭即[start,end)
mySum += each
print(mySum)
print("*****for循环常见用法-enumerate:既要每个元素的值也要每个元素对应的索引*****")
for index,each in enumerate(range(1,21,3)): #range(start,end,step) 其中step为步长
print(index,each)
print("*****for循环常见用法-zip:同时遍历两个可迭代对象*****")
for x,y in zip([1,2,3],[4,5,6]): #
print(x,y)
#break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用”
print("*****continue:计算1-100的偶数和*****")
mySum = 0
for each in range(1,101):
if each % 2 != 0:#计算偶数和,则遇到奇数时continue进入下一次循环
continue
mySum += each #只有偶数情况时才会执行该语句
print(mySum)
print("*****break*****")
mySum = 0
for each in range(1,101):
if each % 2 != 0:
break #第一次碰见奇数时就break结束循环,因此mySum仍为0
mySum += each
print(mySum)
demo9-字典与集合
#demo-9
#字典dict与集合set
#dict key:value 键值对 map
scoresDict = {
"tom":100,
"david":80,
"green":60
}
print(scoresDict)
scoresDict["selly"] = 99
print(scoresDict)
print("*****判断key是否在字典里*****")
print("selly" in scoresDict)
print("test" in scoresDict)
print(scoresDict.get("test",999))
print(scoresDict.get("selly",999))#get函数若存在key,则放回value,否则返回自己设置的值
print("*****删除key*****")
print(scoresDict)
scoresDict.pop("tom")
print(scoresDict)
#set无序集合
print("*"*50)
# mySet = set(1,3,4,4,4,4,5,5) #TypeError: set expected at most 1 arguments, got 8
mySet = set([1,3,4,4,4,4,5,5,6,7,8,8,8,9]) #使用列表List创建集合
print(mySet)
print("*****使用add与remove*****")
print(mySet)
mySet.add(999)
print(mySet)
mySet.remove(999)
print(mySet)
print("*****集合交、并、差操作*****")
aSet = set([1,2,3,4])
bSet = set([3,4,5,6])
print(aSet & bSet)
print(aSet | bSet)
print(aSet-bSet)
print(bSet-aSet)
demo10-可变对象与不可变对象
#demo-10
#不可变对象 !!重要
#可变对象
testList = [9,10,6,4,5]
print(testList)
testList.sort()
print(testList)
#不可变对象:对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。
#相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
testStr = "hello world"
print(testStr)
testAnotherStr = testStr.replace("l","L")
print(testStr)
print(testAnotherStr)