首页 > 代码库 > python - day02
python - day02
本节类容:
1. 循环语句
if for while
2.数据类型
数字 字符串 列表 元组
python 循环语句:
python if 语句:
# 用户登录验证
# 思路:
1.提示用户输入用户名和密码
2.验证用户名和密码
3.正确. 提示成功.并欢迎
4.错误. 提示并退出程序
user_name = input("Please input user name:")
password = input("Please input user password:")
if user_name == "Yuhl" and password == "abc123"
print("welcome %s Login successful"%user_name)
else:
print("username and password errors..")
# 猜年龄游戏
my_age = 27
user_age = input("Please Input your age")
if user_age == my_age:
print("Congratulations, you got it")
elif user_age > my_age:
print("Oops,got guess bigger")
else:
print("Oops,got guess small")
PS:外层变量可以被内层代码使用. 内层代码无法被外层代码使用.
python for 循环:
- 打印十个数字
for line in range(10):
print(line)
- 流程控制 只打印数字5后面的
for line in range(10):
if line > 5:
print(line)
- for循环猜年龄游戏【只能猜三次】
Yuhl_age = 27
for line in range(3):
user_age = input("Please Input user age:")
if user_age == Yuhl_age:
print("welcome your guessed it")
elif user_age > Yuhl_age:
print("input errors larger. please again input use age")
else:
print("input errors smaller. please again input use age")
- for else结合使用猜年龄游戏讲解【for else】
Yuhl_age = 27
for line in range(3):
user_age = input("Please Input user age:")
if user_age == Yuhl_age:
print("welcome your guessed it")
elif user_age > Yuhl_age:
print("input errors larger. please again input use age")
else:
print("input errors smaller. please again input use age")
else:
exit("Too Many Attemots....")
PS:for else的含义是程序在正常执行的时候走else下的代码.如果中间程序有呗break的那么就不会执行else里代码
如果以下代码中的if 判断和break注视加上. 那么会执行else中的代码. 正常执行
如果以下代码中的if 判断和break注视未加. 那么不会执行else中的代码. 这就是区别. 中间截断不执行else下数据
for i in range(10):
print(i)
if i == 5:
break
else:
print("程序正常结束")
- for 循环嵌套讲解01
for i in range(5):
for j in range(5):
print(i,j) # 此处pint包含3
if j > 3:
break # break跳出整个当前层循环. 只跳一层
print(i,j) # 此处pint不包含3. 逻辑问题
- for 循环嵌套讲解02
for i in range(10):
for j in range(10):
print(i.j) # 此处print的话包含6
if j < 5:
break # break. 外层大循环依旧被执行过. 嵌套循环中j < 5就break了. 那么下边的print就不会被执行
continue # 跳出当前循环. 继续下一次循环
print(i,j) # 此处print的话不包含6 逻辑问题
python while 循环:
- while 死循环
count = 0
while True:
print("welcome your enter while Infinite loop.....%s"%count)
count += 1
- while 语句if进行流控制.只打印某一点数据
count = 0
while True:
if count == 9999
print("welcome your enter while Infinite loop.....%s"%count)
break
count += 1
- while 语句. 只打印多少次
count = 0
while count < 10:
print("welcome your enter while Infinite loop.....%s"%count)
count += 1
- while 语句.加if控制流
count = 0
while True:
print("welcome your came to Heaven on earth")
if count == 5:
print("What a paradise on earth it is hell on earth")
break
count += 1
- while 猜年龄游戏
count = 0
YHL_age = 27
while count < 3:
"""strip() #去除空格 isdigit()判断是不是整数 int()转换成整数 """
input_age = input("Please input age:").strip()
if input_age.isdigit():
input_age = int(input_age)
else:
continue
if input_age == YHL_age:
print("guess correct .....")
break
elif input_age == YHL_age:
print("guess the.")
else:
print("Guess a little")
count += 1
python 数据类型:
数字
定义:a = 1
特性:1.只能存放一个值
2.一经定义.不可更改
3.直接访问
分类:
1.整型[int] python中的整数可以用十进制、八进制、十六进制表示
十进制转换成二进制可使用内置函数bin(10) 直接转换即可
十进制转换成八进制可使用内置函数oct(10) 直接转换即可
十进制转换成十六进制可使用内置函数hex(10) 直接转换即可PS:0b开头的标识二进制 0开头的表示八进制 0x开头表示十六进制 查看变量类型:print(type(变量名))
2.长整型 python2中还存在(长整型数字后边会出现L) python3中不存在
3.布尔 布尔分为True[1] and False[0]
4.浮点 相当于数据中的小数
5.复数 由实数和虚数部分组成. 如:x+yj 其中x是复数的实数部分 y是复数的虚数部分 [x和y都是实数]
PS:1.3 + 2.5j == 1.3 + 2.5j 【PS:1.3是实数 2.5j是虚数. 其中虚数后必须叫字母.不区分大小写】 True
以下是数据类型的操作:数据类型基本操作# ========= 十进制转二进制 and 二进制转十进制 # ps:将 10 转换成二进制 >>aa = bin(10) >>print(aa) >>0b1010 >>print(type(aa)) >>class ‘str‘ # ps:将二进制数0b1010通过二进制方法转换成十进制 >>bb = int("0b1010",base=2) >>print(bb) >>10 # ========= 八进制转十六进制 and 八进制转十进制 # ps:八进制 and 十六进制一样 # 将 10 转换成八进制 >>cc = oct(10) >>print(cc) >>0o12 # ps:将八进制数0o12通过八进制方法转换成十进制 >>dd = int("0o12",base=8) >>print(dd) >>10 # ========= 十进制转十六进制 and 十六进制转十进制 # 将 10 转换成十六进制 >>ee = hex(10) >>print(ee) >>0xa # 将十六进制数0xa通过十六进制方法转换成十进制 >>ff = int("0xa",base=16) >>print(ff) >>10
字符串
定义:a = ‘linux‘ b = ‘123‘ c = "linux" d = "123" a = ‘‘‘123‘‘‘ b = """linux"""
PS:python当中单引号和双引号和三引号对于字符串来说并没有区别.其中包含特殊意义的并未进行转换.如果想将括号中原样输出直接加r
比如:\n
print ("a\nb") 输出:a 和 b(注意:此处是换行了的)
print (r"a\nb") 输出:a\nb (注意:此处是加r的话,表示我字符串中怎么写的就这么给我打印出来)
print (‘i‘m Yhl‘) 这样输出时会报错.当程序在遇到第二个‘就当结束了.m会当成变量.但是这里并非是变量.所以报错. 如下:
print ("i‘m Yhl")
PS:只要含字母的都需要加引号. 否则会报错字符串相关方法:
字符串相关方法1 ======================================================================================================================================= 2 #定义变量 3 msg = "i‘m YHL" 4 5 capitalize() 注解:首字母大写. 如:已经大写还是大写 其他大写变成小写 6 print (msg.capitalize()) 7 输出:I‘m yhl 8 9 lower() 注解:将大写字母转成小写 10 print(msg.lower()) 11 输出:i‘m yhl 12 13 upper() 注解:将所有小写转成大写 14 print(msg.upper()) 15 输出:I‘M YHL 16 17 center(长度,填充的值) 注解:定义长度.让其变量中字符串剧中显示 18 print (msg.center(20)) 19 输出: i‘m YHL : 20 print (msg.center(20,"*")) 21 输出:******i‘m YHL******* 22 23 count("值") 注解:统计某一字符串出现的次数 24 print (msg.count("Y")) 25 输出:1 26 print (msg.count("Y",0,3)) 27 输出:0 PS:从下标开始找. 下标0-3之间找Y出现过几次. 注意:顾头不顾尾.这里是0-3实际是0-2 28 print (msg.count("Y",0,-1)) 29 输出:0 PS:从下标开始找. 下标0--1之间找Y出现过几次. 注意:此处的-1表示最后 30 print (msg.count("Y",3)) 31 输出:1 PS:从下标开始找. 下标3之后开始找Y出现过几次. 32 33 endswith("值") 注解:判断以什么结尾.真返回True 否则返回Fales 34 print (msg.endswith("d")) 35 输出:False PS:意思是以什么结尾.如果是返回True 否则返回False 36 37 38 39 ======================================================================================================================================= 40 #定义变量 PS:变量中的\t表示空格.默认是一个tab键 41 msg1 = "a\tb" 42 43 xpandtabs() 注解:设置空格大小.默认是八个空格.意思就是说括号中不写数字 44 print(msg1.expandtabs(10)) 45 输出:设置a and b之间的空格大小. 46 47 find("值") 注解:查找字符下标或坐标.注意:\t默认占1位.键盘上空格敲1下占1位.敲2下占2位.以此类推.一个tab键就占1位 48 print(msg1.find("b")) 49 输出:2 PS:空格也算. 注意:如果找不到会返回-1 50 print(msg1.find("b",0,8)) 51 输出:2 PS:如果字符串中出现多个只回显第一个的下标.还有就是这样写是规定一个范围 52 53 format("值","值") 注解:格式化字符串 54 print("{0}{1}{0}".format("name","age")) 55 输出:nameagename ps:{0}-name{1}-age{0}-name 注意:相当于是下标一一对应 56 print("{name}".format(name="YHL")) 57 输出:YHL ps:相当于打印变量name对应的值. 58 print("{}{}{}".format("name","age","YHL")) 59 输出:nameageYHL ps:前边中括号有几个后台值就必须有几个.否则会报错. 注意括号不能多.值可以多 60 61 index("值") 注解:查找索引 62 print(msg1.index("a")) 63 输出:1 PS:如果一个变量中出现多个相同的字母.那么也只返回第一个 64 PS:find 和 index 都是查找下标. 65 两个的区别在于: 66 find:是不知道有没有.是去找. 如果有正常返回.如果没有返回-1 67 index:是知道有.通过已知的去找对应的下标. 如果有正常返回.如果没有直接报错 68 69 70 71 ======================================================================================================================================= 72 #定义变量 73 msg2 = "a123" 74 75 isalnum() 注解:判断变量是否由数字和字母组成.是返回True.否则返回False 纯数字和纯字母都可以.不能是数字和字母之外的 76 print(msg2.isalnum()) 77 输出:True 78 79 isalpha() 注解:是字母返回True 否则返回False. 必须全是字母 80 print(msg2.isalpha()) 81 输出:False 82 83 84 85 ======================================================================================================================================= 86 #定义变量 87 msg3 = "10" 88 89 isdecilmal() 注解:判断是否是十进制数. 是返回True 否则返回False 注意:只能是数字. 90 print(msg3.isdecimal()) 91 输出:True PS:如果是10.2则会报错. 92 93 isdigit() 注解:判断是不是整型 注意:只能整数. 94 print(msg3.isdigit()) 95 输出:True 96 97 98 99 ======================================================================================================================================= 100 #定义变量 101 msg4 = "if" 102 103 isidentifier() 注解:判断字符串中是否存在关键字. 是返回True 否则返回False 104 print(msg4.isidentifier()) 105 输出:True PS:如果是ifa的话就直接返回True 一定要清楚是关键字.(包含) 106 107 islower() 注解:判断字符串是否为小写. 是返回True 否则返回False 108 print(msg4.islower()) 109 输出:True PS:必须全都是小写. 否则返回False 110 111 isupper() 注解:判断字符串是否为大写. 是返回True 否则返回False 112 print(msg4.isupper()) 113 输出:False PS:必须全都是大写. 否则返回False 114 115 116 117 ======================================================================================================================================= 118 #定义变量 119 msg5 = " " 120 121 isspace() 注解:判断是否为空格.是空格返回True 否则返回False. 注意:\t也是空格. tab \n 敲键盘空格一样 122 print(msg5.isspace()) 123 输出:True PS:不能有其他的.必须全是空格 124 125 126 127 ======================================================================================================================================= 128 #定义变量 129 msg6 = "Hello Word" 130 131 istitle() 注解:判断抬头. 就是首字母是不是大写.是就返回True. 否则返回False. 132 print(msg6.istitle()) 133 输出:True PS:是单词的首字母.如果单词中还有别的是大写也是False 134 135 136 137 ======================================================================================================================================= 138 #定义变量 139 msg7 = "Yhl" 140 141 ljust(值,"*") 注解:左对齐. 142 print(msg7.ljust(10,"*")) 143 输出:Yhl******* PS:左对齐,缺少的部分用*填充.长度是10 144 print(msg7.ljust(10)) 145 输出:Yhl PS:左对齐,缺少的部分用空格填充.长度是10 146 147 ljust(值,"*") 注解:右对齐. 148 print(msg7.rjust(10,"*")) 149 输出:*******Yhl PS:右对齐,缺少的部分用*填充.长度是10 150 print(msg7.rjust(10)) 151 输出: Yhl PS:右对齐,缺少的部分用空格填充.长度是10 152 153 154 155 ======================================================================================================================================= 156 #定义变量 157 msg8 = " abcd " 158 159 strip() 注解:去掉空格(前后都去). 如果:" SA SAS"那么中间的空格无法去除 160 print(msg8.strip()) 161 输出:abcd 162 163 lstrip() 注解:只去掉左边的空格.右边的不去掉 164 print(msg8.lstrip()) 165 输出:abcd " 166 167 rstrip() 注解:只去掉右边的空格.左边的不去掉 168 print(msg8.rstrip()) 169 输出: abcd 170 171 maketrans("值","值") 注解:制作翻译表.下边是用法. 长度必须是一一对应否则会报错. 172 msg9 = "my name is abcd" 173 table = str.maketrans("a","2") 174 print(msg9.translate(table)) 175 输出:my n2me is 2bcd 176 177 178 179 ======================================================================================================================================= 180 #定义变量 181 msg10 = "abcdefg" 182 183 zfill(10) 注解:右对齐.左边不够的用0填充 184 print(msg10.zfill(10)) 185 输出:000abcdefgPS:字符串常用操作:
字符串常用操作1 1.移除空白 2 msg01 = " dsadasi21 \n " 3 print(msg01.strip()) 4 输出:dsadasi21 5 6 7 2.分割 8 msg02 = "www.baidu.com" 9 print(msg02.split("i")) 10 输出:[‘www.ba‘, ‘du.com‘] PS:以i为点进行分割. 11 12 print(msg02.split(".",1)) 13 输出:[‘www‘, ‘baidu.com‘] PS:以.进行分割1次. 14 15 print(msg02.split(".",2)) 16 输出:[‘www‘, ‘baidu‘, ‘com‘] PS:以.进行分割2次. 注意:如果.在字符串中不够分的次数.那么不会报错.按最多分 17 18 print(msg02.split(".")[0]) 19 输出:www PS:以.进行分割.并打印出下标为0的数据 20 21 print(msg02.split(".")[-1]) 22 输出:com PS:以.进行分割.并打印出最后一个数据 23 24 print(msg02.split(".")[0:2]) 25 输出:[‘www‘, ‘baidu‘] PS:以.进行分割.并打印出下标是0,1的数据 26 27 28 3.长度 29 msg03 = "www.baidu.com" 30 print(len(msg02)) 31 输出:13 PS:计算字符串长度 32 33 34 4.索引(和切片很像) 35 msg04="welcometobeijingYhl" 36 print(msg04[2]) 37 输出:l PS:通过索引获取字符串中对应的值 38 print(msg04.index("o")) 39 输出:4 PS:通过字符串中的值找对应的下标(索引) 40 41 42 5.切片 43 msg04="welcometobeijingYhl" 44 print(msg04[0:3]) 45 输出:wel 46 47 print(msg04[0:]) 48 输出:welcometobeijingYhl 49 50 print(msg04[0:-1]) 51 输出:welcometobeijingYh 52 53 print(msg04[:]) 54 输出:welcometobeijingYhl 55 56 print(msg04[2]) 57 输出:l PS:通过索引取对应的值 58 59 print(msg04[2:7:2]) 60 输出:loe PS:步长. 各几个取几次.
列表
定义:name = ["元素1","元素2","元素3",.....]
特性:1.列表可循环
2.列表可套列表 取的时候通过下标进行获取.也可进行切片来获取.
3.如果是列表套列表的话. 必须是循环打印.无法直接打印.
操作:
name = ["元素1","元素2","元素3","元素4","元素5","元素6"]
获取列表中的某一元素:
print(name[1]) 输出:元素2
print(name[0:3]) 输出:元素1,元素2,元素3
PS:获取列表中的数据和获取字符串中的数据方法一样。都是通过切片和下标进行获取. 也可计算字符串的长度.
列表相关操作:【增加 删除 修改 查询】
增加增加.2种方法1 #定义列表 2 name = ["元素1","元素2","元素3","元素4","元素5","元素6"] 3 4 方法:append()追加到最后 5 name.append("元素7") 6 print(name) 7 输出:[‘元素1‘, ‘元素2‘, ‘元素3‘, ‘元素4‘, ‘元素5‘, ‘元素6‘, ‘元素7‘] 8 9 方法:insert(下标,"插入的值") 10 name.insert(2,"YHL") 11 print(name) 12 输出:[‘元素1‘, ‘元素2‘, ‘YHL‘, ‘元素3‘, ‘元素4‘, ‘元素5‘, ‘元素6‘]删除删除.3种方法1 #定义列表 2 name = ["元素1","元素2","元素3","元素4","元素5","元素6"] 3 4 方法:remove("元素")删除指定元素 5 name.remove("元素7") 6 print(name) 7 输出:[‘元素1‘, ‘元素2‘, ‘YHL‘, ‘元素3‘, ‘元素4‘, ‘元素5‘, ‘元素6‘] 8 9 方法:del 通过下标删除元素 10 del name[-1] 11 print(name) 12 输出:[‘元素1‘, ‘元素2‘, ‘YHL‘, ‘元素3‘, ‘元素4‘, ‘元素5‘] 13 14 方法:pop()下标进行删除. 不写下标.默认删除最后一个【指定下标删除:print(name.pop(3))】 15 name.pop() 16 print(name) 17 输出:[‘元素1‘, ‘元素2‘, ‘YHL‘, ‘元素3‘, ‘元素4‘]修改修改.1种方法1 #定义列表 2 name = ["元素1","元素2","元素3","元素4","元素5","元素6"] 3 4 方法:通过下标修改元素.修改成自己想要的. 5 name[2] = "于洪林" 6 print(name) 7 输出:[‘元素1‘, ‘元素2‘, ‘于洪林‘, ‘元素3‘, ‘元素4‘]查询查询.通过下标查询1 #定义列表 2 name = ["元素1","元素2","元素3","元素4","元素5","元素6"] 3 4 通过下标查下列表中对应的元素 5 print(name[2]) 输出:于洪林 6 print(name[0::2]) 输出:[‘元素1‘, ‘于洪林‘, ‘元素4‘] PS:跳着取 7 print(name[-3:]) 输出:[‘于洪林‘, ‘元素3‘, ‘元素4‘] PS:获取倒数第三个往后的所有.包括导数第三个 8 print(name[:3]) 输出:[‘元素1‘, ‘元素2‘, ‘于洪林‘] PS:获取下标三之前的元素.不包含元素三. 顾头不顾尾 9 print(name[0:3]) 输出:[‘元素1‘, ‘元素2‘, ‘于洪林‘] PS:获取下标0-下标3的元素.不包含元素三. 顾头不顾尾 10 print(name.index("元素1")) 输出:0 PS:通过元素获得下标。 如果列表中有相同的元素.那么只取找到的第一个.顺序:从左到右.无就报错. 11 12 获取列表中相同元素第二个的下标: 13 name1 = ["001","002","002","001","004","005"] 14 first_index = name1.index("001") 解释:获取元素001的下标. 下边并打印出来 15 print("first_index",first_index) 输出:first_index 0 16 second_index = name1[first_index+1:] 解释:通过之前获取的下标加1并获取之后元素. 下边并打印出来 17 print("second_index01",second_index) 输出;[‘002‘, ‘002‘, ‘001‘, ‘004‘, ‘005‘] 18 second_index = name1[first_index+1:].index("001") 解释:通过之前获取的下标加1之后的元素中查找元素001. 并打印出来 19 print("second_index02",second_index) 输出:second_index02 2 20 print("second_index03",second_index+first_index+1) 解释:本次获取元素下标加上之前获取的下标在加1之后的元素中查找元素001的下标.就是第二个元素的下标
列表相关方法:
列表操作的相关方法1 #定义列表 2 name = ["元素1","元素2","元素3","元素4","元素5","元素6"] 3 4 方法:Count("元素")统计列表中相同元素出现的次数 5 print("Count",name.count("元素1")) 6 输出:Count 2 7 8 方法:clear清空列表 9 print(name.clear) 10 输出:[] 11 12 方法:extend("元素")正常用法是对于两个列表进行操作【如:n1和n2列表】 13 name.extend("我爱你") 14 print(name) 15 输出:[‘元素1‘, ‘元素1‘, ‘于洪林‘, ‘元素3‘, ‘元素4‘, ‘我‘, ‘爱‘, ‘你‘] 16 17 n1 = ["001","002"] 18 n2 = ["003","004"] 19 注解:将列表n2的元素添加到列表n1里面去 20 n1.extend(n2) 21 print(n1) 22 输出:["001","002","003","004"] 23 24 方法:reverse()反转.意思就是反过来显示. 25 n1.reverse() 26 print(n1) 27 输出:[‘004‘, ‘003‘, ‘002‘, ‘001‘] 28 29 方法:sort()排序按照ASCII进行排序的 30 n1.sort() 31 print(n1) 32 输出:[‘001‘, ‘002‘, ‘003‘, ‘004‘,] 33 34 方法:copy()是完完全全的复制一份 =【等于】相当于是别名.主的变了.他也跟着变 35 nn = n1.copy() 36 print("1",nn,n1) 37 输出:1 [‘001‘, ‘002‘, ‘003‘, ‘004‘] [‘001‘, ‘002‘, ‘003‘, ‘004‘]补充知识:
循环列表:
name = ["元素1","元素2","元素3","元素4","元素5","元素6"]
for i in name:
print(i)
输出:元素1 \n元素2 \n元素3 \n元素4 \n元素5 \n元素6 PS:\n相当于换行符
循环列表.并显示元素的下标
for i in enumerate(name2): #或这样写 for i,ele in enumerate(name2):
print(i) print(i,ele) PS:输出和左边的一样
输出:(0, ‘元素1‘) \n(1, ‘元素2‘) \n(2, ‘元素3‘) \n(3, ‘元素4‘) \n(4, ‘元素5‘) \n(5, ‘元素6‘)PS:\n相当于换行符
列表套列表.并取对应的值
products = [
["Iphone",6100],
["Mac Book",12800],
["Watch",3200],
]
for i,ele in enumerate(products):
print(i,ele)
输出:0 [‘Iphone‘, 6100] \n1 [‘Mac Book‘, 12800] \n2 [‘Watch‘, 3200] PS:相当于换行符
print(i,ele[0],ele[1]) PS:此处ele[0] 表示获取列表中下标为0的元素 ele[1] 表示获取列表中下标为1的元素. 以此类推
输出:0 Iphone 6100 \n1 Mac Book 12800 \n2 Watch 3200 PS:相当于换行符
将列表转换成字典:PS:字典无序.可去重
# 方法一:
Age01 = ["01","02","03","02","04","01","02","03"]
Age02 = set(Age01)
print(Age02)
输出:{‘01‘,‘02‘,‘03‘,‘04‘} PS:注意字典是无序的.
# 方法二: PS:定义红列表,顺序是怎么样的就是怎么样的
Age01 = ["01","02","04","02","04","01","02","03"]
Age02 = []
for i in Age01:
if not i in Age02:
Age02.append(i)
print(Age02)
输出:["01","02","04","03"]
元组
- 元组和列表差不多.也是存一组数. PS:元组一旦创建便不可更改. 故又称只读列表
语法:
name = ("yuhonglin","gouer","xixihaha")
方法:
只有两方法. 1.count 2.index
python - day02