Python学习笔记数据类型 运算符 循环 条件判断

1.  Python安装

    在官网www.python.org下载安装程序,可以支持的操作系统linux,windows,mac.

    Python版本:2.x和3.x,分别有x86和x64.

    在Windows系统下安装完成后,需要配置一下环境变量,方便使用Python交互式模式。

    https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe

    查看当前系统的python版本命令:python -V

2.  Python特点

    Python3.x 默认使用UTF-8编码,Python2.x默认使用ASCII编码。

    注释:使用#号,单行注释;使用单引号双引号,多行注释。

    采用行缩进的方式,表示代码块。

3.  Python解释器工具Pycharm

    安装激活pycharm

4.  数据类型之数字类型

    int整型     float浮点型     complex复数

5.  数据类型之字符串

    name=”yangjianbo”
    print(name)
    name=’yangjianbo’     print(name)
    name=’’’yangjianbo’’’     print(name)

    

     +  字符串连接

     例子:

     a="wo"
     b="shi"
     c="shui"
     d=a +'  ' +b +' ' + c
     print(d) 


    *  字符串重复输出

    a='yangjianbo'
    c=a*2
    print(c)

    []  取字符串的第几个字符,从左到右从0开始,从右到左从-1开始。

    a='yangjianbo'
    print(a[-2])

 

    [:]  取字符串的一部分

    a='yangjianbo'
    print(a[1:4])
    从索引1开始,从左到右的第4位结束,不包含第4位
    输出的结果为ang.

6.  数据类型之列表

    特点:用方括号括起来,元素之间用逗号隔开

    列表索引从0开始(从左往右),从-1开始(从右往左)

    system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3]
    print (system)
    输出结果如下:
    ['yangjianbo', 'wangyanhe', 'gaozhongmin', 1, 2, 3]

    

    查看列表的长度

    system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3]
    print (len(system))
    输出结果
    6

    

    输出列表list索引为1的元素,访问列表中的元素

    system=['yangjianbo','wangyanhe','gaozhongmin',1,2,3]
    print (system[1])
    输出结果
    yangjianbo

    更新列表元素

    xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
    print (xitongbu)
    xitongbu[2]='gushuwei'
    print (xitongbu)
    输出结果
    gushuwei

  

    删除列表元素

    xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
    print (xitongbu)
    xitongbu[2]='gushuwei'
    print (xitongbu)
    del xitongbu[2]   删除索引为2的元素
    print (xitongbu)
    del xitongbu      删除整个列表
    print (xitongbu)
    输出结果:没有对应的索引了

    合并列表

    list1=[1,2,3]
    list2=[4,5,6]
    list3=list1+list2
    print (list3)
    输出结果
    [1, 2, 3, 4, 5, 6]

  

    重复元素

    list=['yangjianbo']*4
    print (list)
    输出结果
    ['yangjianbo', 'yangjianbo', 'yangjianbo', 'yangjianbo']

  

    元素是否在列表中

    list=['yangjianbo','wangyanhe','gaozhongmin']
    if 'yangjianbo' in list:
      print ("You are right!")     else:       print ("You are wrong!")     输出结果     You are right!

    列表函数

    列表长度   len()

    列表最大值 max() 如果是整型直接比大小,如果是字符串,比英文字母靠后

    列表最小值 min() 
    xitongbu=['yangjianbo','zazgyanhe','zaozhongmin']
    print (min(xitongbu))

    列表转换    list() 把元组转换为列表
    ruanjianbu=('wangyanzhe','wangzhibing','liushuang')
    ruanjianbu=list(ruanjianbu)
    print (type(ruanjianbu))

    列表方法

    增加元素
    默认会在最后添加一个新元素,这个方法没有返回值。
    向原来的列表添加一个新的元素,这个方法只能添加一个元素,添加两个会有报错。
    list.append(obj)
    例子:
    xitongbu=['yangjianbo','wangyanhe']
    xitongbu.append(2222)
    print (xitongbu)
    输出结果
    ['yangjianbo', 'wangyanhe', 2222]

    删除元素
    默认会删除最后一个元素,并且返回该元素的值。
    list.pop()
    例子:
    xitongbu=['yangjianbo','wangyanhe']
    xitongbu.pop(0)
    print (xitongbu)
    输出结果
    ['wangyanhe']
 
    插入元素
    list.insert(index.obj)
    例子:
    在第一个元素添加。
    xitongbu=['yangjianbo','wangyanhe']
    xitongbu.insert(0,'gaozhongmin')
    print (xitongbu)
    输出结果
    ['gaozhongmin', 'yangjianbo', 'wangyanhe']

    统计某个元素的数量
    list.count(obj)
    例子:
    xitongbu=['yangjianbo','wangyanhe','yangjianbo','yangjianbo']
    print (xitongbu.count('yangjianbo'))
    输出结果
    3
 
    找出某个元素的索引号,如果有多个相同的元素,列出第一个匹配元素的索引号
    list.index(obj)
    例子:
    xitongbu=['yangjianbo','wangyanhe','yangjianbo','yangjianbo']
    print (xitongbu.index('wangyanhe'))
    输出结果
    1

    拿一个其他列表扩展列表
    list1=['yangjianbo','wangyanhe']
    list2=[22,33]
    list2.extend(list1)
    print(list2)
    输出结果
    [22, 33, 'yangjianbo', 'wangyanhe']

    删除某个元素的第一个匹配项
    list.remove(obj)
    例子:
    xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
    xitongbu.remove('yangjianbo')
    print (xitongbu)
    输出结果
    ['wangyanhe','gaozhongmin']

    反向列表中元素
    list.reverse
    顺序倒序。
    例子:
    xitongbu=['yangjianbo','wangyanhe','gaozhongmin']
    xitongbu.reverse()
    print (xitongbu)
    输出结果
    ['gaozhongmin', 'wangyanhe', 'yangjianbo']

    对列表进行排序
    list.sort(obj)
    xitongbu=['yangjianbo','wangyanhe','gaozhongmin','liming','a']
    xitongbu.sort()
    print (xitongbu)
    输出结果
    ['a', 'gaozhongmin', 'liming', 'wangyanhe', 'yangjianbo']   

7.   数据类型之Tuple元组

    特点:使用小括号,元组的元素不能被修改,只能读取。

    当元组的元素只有一个的时候,必须在元素后面加一个逗号,否则,python会认为这是一个字符串。

    修改元组中的元素
    例子:
    yuanzu=('yangjianbo','gaozhongmin','wangyanhe')
    yuanzu[0]='zhangxueyou'
    print (yuanzu[0])
    输出结果直接报错了。

    删除元组
    删除元组中的元素,会有报错
    但是可以删除整个元组
    例子:
    del yuanzu

8.  集合

9.  Dictionary字典

    特点:每个键值组成一对,键值之间使用冒号隔开,整个字典使用{}。

    每对之间使用逗号隔开。

    键是唯一的,但值不必。

    键可以是字符串数字元组,不可以是列表,值可以使用任何类型。

    xitongbu={['name']:'yangjianbo','age':30}
    print (xitongbu)
    输出结果
    TypeError: unhashable type: 'list'
    

    字典没有索引的概念,查看值的时候,不需要使用索引。

      xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
      print (type(xitongbu))
      print (xitongbu['name'])

      输出结果

      <class 'dict'>
      yangjianbo

      必须写明键名称。

 

      每个键只能出现一次,如果出现两次,以后一个为准。

      xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan','name':'wangyanhe'}
      print (xitongbu)

      输出结果

      {'name': 'wangyanhe', 'zhiwu': 'xitongguanliyuan'}

 

      修改已存在的键的值。

      xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
      xitongbu['name']='wangyanhe'
      print (xitongbu['name'])

      输出结果

      wangyanhe

      添加一个新的键值。

      xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
      xitongbu['age']='30'
      print (xitongbu)

      输出结果

      {'name': 'yangjianbo', 'zhiwu': 'xitongguanliyuan', 'age': '30'}

      删除字典中的某个元素

      xitongbu={'name':'yangjianbo','zhiwu':'xitongguanliyuan'}
      xitongbu['age']='30'
      del xitongbu['name']
      print (xitongbu)

      输出结果

      {'zhiwu': 'xitongguanliyuan', 'age': '30'}

      

      删除整个字典

      del xitongbu

      输出的时候,会找不到xitongbu的定义。

 

      清空字典的内容

      xitongbu.clear()    

      xitongbu变量的定义还在,只是内容被清空。

10.  Python运算符

    算术运算符

    +  加法

    -  减法

    *  乘法

    /  除法

    %  余数

    **  幂数

    //  除完的商数

 

    比较算术符

    ==  等于
    >=  大于等于
    <=  小于等于
    !=   不等于
    >   大于
    <   小于
    例子:
    a=12
    b=19
    if a > b:
      print("you are right")
    else:
      print("you are wrong!")

    赋值运算符

    = 普通赋值

    += 加法赋值
    例子:
    num=1
    a=5
    num+=a
    print(num)
    相当于:num=num+a  ,输出的结果为:6

    -=   减法赋值
    例子:
    num=1
    a=5
    num-=a
    print(num)
    相当于: num=num-a,输出的结果为:-4

    *=  乘法赋值
    例子:
    num=9
    a=5
    num*=a
    print(num)
    相当于num=num*a,输出的结果:45

    /=  除法赋值
    num=8
    a=3
    num/=a
    print(num)
    相当于num=num/a,输出的结果:2.6666666666666665

    //=  除法商数赋值
    num=10
    a=3
    num//=a
    print(num)
    相当于num=num//a,输出的结果为:3

    %=  除法余数赋值
    num=10
    a=3
    num%=a
    print(num)
    相当于num=num%a,输出的结果为:1

    **=  幂数赋值
    num=10
    a=3
    num**=a
    print(num)
    相当于num=num**a,输出的结果为:1000

    Python位运算符

    &: 参与运算的两个值,如果对应位都为1,则结果为1.
    a=5   0101
    b=6   0110
    c=a&b    
    print(c)
    输出结果为0100,转换为十进制为4.

    |: 参与运算的两个值,如果对应位有一个为1,则结果为1.
    a=5   0101
    b=6   0110
    c=a|b
    print(c)
    输出结果为0111,转换为十进制为7

    ^: 表示对应位的不同时,结果为1.
    a=5   0101
    b=6   0110
    c=a^b  
    print(c)
    输出结果为0011,转换为十进制为3.

    ~:对应的二进制取反,-x-1  
    a=5  
    b=6
    c=~b  
    print(c)
    输出的结果为 -7

    Python逻辑运算符

    and  与
    or  或
    not  非

11.  条件语句

    条件语句的执行过程

                 

    语法结构 

    if  判断条件:

      执行语句……

    else:

      执行语句……

    name='yangjianbo'
    if name=='yangjianbo':
         print('了四五度')
    else:
         print('pgone')

 

    if有多个判断条件

    name='yangjianbo'
    age=20
    if name=='yangjianbo' and age >25:
         print('了四五度')
    else:
         print('pg one')

 

    当判断的值有多个的时候,就需要使用if ... elif ... else

语法结构:

if 判断条件1:

           执行语句1……

elif 判断条件2:

           执行语句2……

elif 判断条件3:

           执行语句3……

else:

           执行语句4……

    age=input('请输入你的年龄>>:')
    age=int(age)
    if age>50:
        print('奶奶,你好!')
    elif age>30:
        print('阿姨,你好!')
    elif age>20:
        print('姐姐,你好!')
    else:
        print('老妹,你好!')

12.  循环语句

    循环结构图

 

                 

    当条件符合时,则进行循环,否则,循环结束。

 

    循环方式

while循环

  while 判断条件:

       执行语句……

      for循环

      嵌套循环

      count=0
      while count<9:
          print("count:",count)
          count=count+1
      print("循环结束!")

13.  continue语句

    count=0
    while count<9:
        if count==6:
            count=count+1
             continue
        else:
            print("count:",count)
            count=count+1
    print("循环结束!")

输出的结果:

        

    从这个例子中,可以看出continue跳出count等于6时的循环。但是仍然继续7和8的循环。

14.  break语句

    count=0
    while count<9:
        if count==6:
          count=count+1
          break
      else:
          print("count:",count)
          count=count+1
     print("循环结束!")

  输出的结果: 

          

          从这个例子中,可以看出break跳出整个循环,直接执行循环结束了。

15.  while +else

       只有while循环完成,才会执行else后面的语句,如果while循环被break,则不会执行else后面的语句。

16.  作业

#while练习题
#求1-100的所有数的和:
sum=0
count=1
while count<=100:
    sum=sum+count
    count+=1
else:
    print(sum)
输出结果:5050 #输出1-100内的所有奇数 #奇数就是除2,余数为1. count=1 while count<=100: if count%2==1: print (count) count+=1 else: count+=1
输出的结果:1 3 5 7 ... 99
#输出1-100内的所有偶数 #偶数就是除2,余数为0. count=1 while count<=100: if count%2==0: print (count) count+=1 else: count+=1
输出结果:2 4 6 8 10 ... 100 #求1-2+3-4+5....99的所有数的和 count=1 sum_jishu=0 while count<=99: if count%2!=0: sum_jishu+=count count+=2 else: print("奇数和完成!") sum_oushu = 0 count=2 while count<=99: if count%2==0: sum_oushu+=count count+=2 else: print("偶数和完成!") jieguo=sum_jishu-sum_oushu print(jieguo)
输出结果:
奇数和完成!
偶数和完成!
50
优化代码
#求1-2+3-4+5....99的所有数的和
count=1
sum=0
while count<=99:
if count%2==0:
sum-=count
else:
sum+=count
count+=1
else:
print(sum)
结果为50

#用户登录(三次机会尝试)
name='yangjianbo'
pwd=123
count=0
while count<=2:
username = input("用户名:")
password = input("密码:")
if username==name and password==pwd:
print("登录成功!")
break
else:
print("登录失败!请重新登录!")
count+=1
else:
print("您已经登录三次!")

#猜年龄
age=18
count=0
while count<=2:
guess=int(input("猜年龄:"))
if guess==age:
print("猜对了!")
break
count=count+1
else:
print("三次都不正确!")

#猜年龄游戏升级版,
age=18
count=0
while count<=3:
if count==3:
choice=input("还要继续猜吗?输入Y or N>>")
if choice=='Y':
count=0
else:
break
guess = int(input("猜年龄:"))
if guess==age:
print("猜对了!")
break
count+=1
#格式化输出
print("My name is %s ,My age is %d" %('yangjianbo',18))
print ("Name : %s" %'yangjianbo')
print ("Age : %s" %22)
print ("Sex : %s" %'male')
print ("Age : %s" %'Teacher')
%s 可以接收字符串和整型
%d 只能接收整型

第一天作业:
#升级需求:
student_list=[{'yangjianbo':'123'},{'wangyanhe':'123456'}]
count=0
while count<3:
    username=input('用户名>>').strip()
    userpassword=input('密码>>').strip()
    with open('lock.txt','r') as lock:
        for i in lock:
            i=i.strip('\n')
            if username == i:
                print('该账号已经被锁定!请换其他账号!')
                break
    for i in student_list:
        if username in i.keys() and userpassword in i.values():
            print('欢迎您到来,您登陆成功了!')
            break
    else:
            count+=1
            print("请重新输入用户名和密码")
else:
    print('您已经输入三次了,账户被锁定!')
    with open('lock.txt','a') as lock_file:
        lock_file.write('%s\n'%username)

要创建一个文件lock.txt,代表数据库用来存储被锁定的账户。

满足需求:

  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序
  • 可以支持多个用户登录 (提示,通过列表存多个账户信息)
    用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
一往无前虎山行,拨开云雾见光明
原文地址:https://www.cnblogs.com/yangjianbo/p/7491184.html