首页 > 代码库 > 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 输出:Im yhl
  8 
  9   lower()                 注解:将大写字母转成小写
 10 print(msg.lower())          
 11 输出:im yhl
 12 
 13   upper()                 注解:将所有小写转成大写
 14 print(msg.upper())          
 15 输出:IM YHL
 16 
 17   center(长度,填充的值)     注解:定义长度.让其变量中字符串剧中显示
 18 print (msg.center(20))      
 19 输出:      im YHL       :
 20 print (msg.center(20,"*"))  
 21 输出:******im 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 输出:000abcdefg
字符串相关方法

PS:字符串常用操作: 

技术分享
 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:获取列表中的数据和获取字符串中的数据方法一样。都是通过切片和下标进行获取. 也可计算字符串的长度.
列表相关操作:【增加  删除  修改  查询】

增加
技术分享
 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]
增加.2种方法
删除
技术分享
 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]
删除.3种方法
修改
技术分享
1 #定义列表
2 name = ["元素1","元素2","元素3","元素4","元素5","元素6"]
3 
4 方法:通过下标修改元素.修改成自己想要的.
5 name[2] = "于洪林"
6 print(name)             
7 输出:[元素1, 元素2, 于洪林, 元素3, 元素4]
修改.1种方法
查询
技术分享
 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