zoukankan      html  css  js  c++  java
  • pyhton笔记(一):字符编码、变量

    一、什么是python?
      python是一种面向对象、解释型的计算机语言,它的特点是语法简洁、优雅、简单易学。

    编译型语言:

      写好代码之后把代码编译成二进制文件,运行时运行编译好的二进制文件。比如C、C++、C#,运行速度快,但编译过程慢。

    解释型语言:

      运行一行代码编译一行,什么时候运行代码,什么时候编译。比如,php、pyhton、ruby、java、go、JavaScript,运行速度较慢,性能差一些。

      Java虽然编译成calss文件,但不是二进制的,在jvm中运行

    脚本语言:

      功能单一的语言。比如shell、vb、javascript、html、bat

     

    指定解释器

     python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

    如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下

    #!/usr/bin/env python  
    print "hello,world"

    如此一来,执行: ./hello.py 即可。

    ps:执行前需给予 hello.py 执行权限,比如,chmod 755 hello.py

     

    pycharm设置默认的模板: 

    view -> 勾选toolbar -> settings :

     pycharm设置字符编码:

     

    python中的单引号、双引号:
      字符串都用引号引起来,单引号和双引号没有区别,如果字符串里面包含单引号的话,外面就用双引号,里面有双引号的话,外面就用单引号

      单行注释:#

      多行注释:'''  ''' 或 """  """  (定义多行的字符串,保持原有的格式)

    pycharm快捷键:

      注释 :ctrl + / 

      复制一行:ctrl + d

     

    二、字符编码发展史:

    --->ASCII  最多只能表示 255 个符号,即:2**8 -1 = 256-1   1bytes(8位)

         --->1980年  gb2312    7445个字符

                --->1995年  GBK1.0   21886个符号

         --->2000年  GB18030  27484个汉字

       ---> Unicode(统一码、万国码、单一码)最少2bytes(16位)表示,即:2 **16 = 65536 (对于英文存储来说比较浪费空间)

        --->UTF-8  对Unicode编码的压缩和优化使得ascii码中的字符用1个字节保存欧洲的字符用2个字节保存东亚的字符用3个字节保存

     

    进制:

      二进制:0  1

      八进制:0 1 2 3 4 5 6 7

      十进制:0 1 2 3 4 5 6 7

      十六进制: 0123456789ABCDEF(0~15)

     

    py3默认字符集是unicode

    字符编码与转码:

    查看当前默认编码:

    import sys
    print(sys.getdefaultencoding()) #py3pycharm设置成的是utf-8,但python系统默认的是Unicode。
    Python3:
    #coding:gbk   #文件编码
    import sys
    print(sys.getdefaultencoding()) #pycharm默认utf-8
    
    s = '你好'
    s_to_gbk = s.encode('gbk')  #b'xc4xe3xbaxc3'
    print(s.encode('utf-8'))    #b'xe4xbdxa0xe5xa5xbd'
    
    #s.encode()相当于:
    gbk_to_utf8 = s_to_gbk.decode('gbk').encode('utf-8')
    print(gbk_to_utf8)    #b'xe4xbdxa0xe5xa5xbd'(和直接encode一样)

    三、变量:为了方便再次调用

      python中定义变量很简单,一个等号就搞定,不需要指定数据类型。python变量指向的是一个内存地址。

    name = 'aaa'
    name2 =name  #将name赋值给name2
    print('name:%d, name2:%d' % (id(name),id(name2)))
    
    name = 'bbb'  #name的值改变
    print('name:%d, name2:%d' % (id(name),id(name2)))


    name:23346048, name2:23346048 name:23346144, name2:23346048 #name的值改变后,指向的内存地址也改变
    
    
    print(id('aaa'),id('bbb'))  #19741568 19741664

     

    变量的定义规则:
      变量名要见名知意(下划线或驼峰的方式命名)
      变量名只能是 字母、数字或下划线的任意组合
      变量名的第一个字符不能是数字

      定义常量:变量名大写

    以下关键字不能声明为变量名: 

    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 
    'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return','try', 'while', 'with', 'yield']

     

    二、输入、输出

    接收用户输入:

    name = input('请输入姓名:')  #input接收输入的值都是string类型的
    age = int(input('age:')) #将input接收的字符串转换成整型 

    today = str(num) #整型、日期类型等转换成字符串型

      raw_input()   #python2中使用的方法

    输出: 

    print("输入的年龄是:%s" % age)

     

    字符串的格式化:

      第一种方式:字符串的拼接(不推荐)

    welcome = "欢迎光临:" + username    #第一种方式:字符串连接,不推荐

      第二种方式:使用占位符

     

      占位符 ---  %s :字符串,%d:整数 ,%.2f: float型(小数点后多少位,自动四舍五入)

     

    welcome = "欢迎光临:%s,今天是:%s" %(username, today)  #多个占位符

     

      第三种方式:s.format(xx=xx,xx=xx):

    age = 18
    name = 'zhangsan'
    sex = 'male'
    sql = "insert into user VALUES ('{name}','{sex}',{age});"
    new_sql = sql.format(age=age,sex=sex,name=name)
    print(new_sql)

     

    三、条件判断

    if 条件:
        xxx
    else:
        xxx

    多条件判断:

    score = input('请输入score:')
    score = int(score)   #input接收的输入是字符串string类型的,此处需要转换成int型
    
    if score>=90:
        print('优秀')
    elif score>=75 and score <90:
        print('良好')
    elif score>=60 and score<75:
        print('合格')
    else:
        print('不合格')

    “or” 的使用:

      if sex==’男’ or sex == ‘xx’:

    “!=”的使用:

      if sex!==’xx’ and/or xxx

     

    四、循环(迭代、遍历):

    while循环:while循环必须有一个计数器,每次循环计算器+1

    count = 0
    while count<10:
        print('Hello world!')  #循环时重复执行循环体中的语句
        count = count + 1
    else:   #与while想对应的else,循环正常结束后才会执行它(前面有break,就不会执行)
        xxx

    for循环 :不需要定义计算器,每次循环,自动+1(for循环不能写出死循环)

    for i in range(3):  #循环3次
        print(i)
        print('hello h')
    else:
        print('正常循环后执行') 

    break和continue,都只能用在循环里面,它们有以下区别:

      break:立即结束循环,不管循环有没有循环完

      continue:结束本次循环,进行开启下一次循环(执行continue,它后面的代码就永远执行不到)

    #while和for循环最后的else,如果前面有break就不算正常循环完,就不会执行else中的语句

     

    五、小练习

    写个猜数字的小游戏,要求:

    产生一个随机数字,1-100之间,接收用户输入;

    如果猜对了,游戏结束;如果猜大了,提示猜大了;如果猜小了,提示猜小了;

    错误次数限制3次。

    产生随机数模块使用random.randint(1,101),是一个标准包,导入即可。

    import random
    num = random.randint(1,10)
    #print(num)
    count = 0
    while count<3:
        guess = input("请输入数字:")
        guess = int(guess)   #转换成int类型
        if guess<num:
            print("小了小了")
        elif guess>num:
            print("大了大了")
        else:
            print("恭喜猜对了")
            break     #break立即结束循环,不管循环有没有循环完
        count = count + 1   #或者写成:count += 1
    else:  #三次循环结束执行else,如果是前面是break,就不执行此else
        print("游戏次数已经用完了。")

     

    六、range的使用:

    for i in range(101):
        if i%2 == 0:
        print(i)

     

    七、字符串格式化:

    占位符:%s -字符串,%d -整数 ,%.2f -float(自动四舍五入)

    import datetime
    today = datetime.date.today()
    username = input("请输入用户名:")
    #welcome = "欢迎光临:" + username    #第一种方式:字符串连接,不推荐
    #welcome = "欢迎光临:%s" %username   #使用占位符格式化字符串
    welcome = "欢迎光临:%s,今天是:%s" %(username, today)  #多个占位符
    print(welcome)

     

    八、练习

    使用while循环:

    #1、登录 username、passwd
        #输入用户和密码输入正确的话,提示:xxx,欢迎登录,今天的日期是xxx,程序结束
        #输入错误的话,提示“账号/密码输入错误”
    # 2、最多输入错误3次,输入错误超过3次,提示错误次数过多    #循环
    # 3、账号密码,要校验输入为空的情况,
    
    import datetime
    
    uname = 'test'
    pwd = '123456'
    today = datetime.date.today()   #获取今天的日期
    
    count = 0
    while count<3:
        username = input("请输入用户名:").strip()   #strip()去掉空格
        passwd = input("请输入密码:").strip()
        if len(username)==0 or len(passwd)==0:
        #if username=='' or passwd=='':   #或者为空
            print("账号或密码不能为空,请重新输入")
            #continue     
        elif username==uname and passwd==pwd:
            print("%s,欢迎登录,今天的日期是:%s" % (username,today))
            break
        else:
            print("账号或密码输入错误!")
        count += 1
    
    else:
        print("输入错误超过3次,错误次数过多!")   #循环正常结束,使用else

     

    使用for循环:

    import datetime
    
    uname = 'test'
    pwd = '123456'
    today = datetime.date.today()   #获取今天的日期
    
    for i in range(3):
        username = input("请输入用户名:").strip()   #strip()去掉空格
        passwd = input("请输入密码:").strip()
        if len(username)==0 or len(passwd)==0:
        #if username=='' or passwd=='':   #或者为空
            print("账号或密码不能为空,请重新输入")
        elif username==uname and passwd==pwd:
            print("%s,欢迎登录,今天的日期是:%s" % (username,today))
            break
        else:
            print("账号或密码输入错误!")
    else:
        print("输入错误超过3次,错误次数过多!")   #循环正常结束,使用else

     

    九、变量的交换

    a = b = c = 0 #定义了3个变量,都是0

    python中直接交换两个变量的值:

    b, a = a, b    #交换两个变量的值(python底层帮你引用了一个三方变量)
    
    print(a,b)
    
    
    a,b,c =c,b,a  #多个变量交换值

     

    【列】通过引入三方变量来交换位置:

    a = 1
    b = 2
    c = None
    
    c = b
    b = a
    a = c
    print(a,b)

    #不通过引用三方变量,交换位置:

    #不通过引用三方变量,交换位置:
    
    a = 1
    b = 2
    a = a + b  #a=3
    b = a - b #b=3-2=1
    a = a - b  #a=3-1=2
    print(a,b)

     

     

     

     

    name = 'aaa'
    name2 =name  #name赋值给name2
    print('name:%d, name2:%d' % (id(name),id(name2)))

    name =
    'bbb'  #name的值改变
    print('name:%d, name2:%d' % (id(name),id(name2)))

     

  • 相关阅读:
    深度学习框架caffe在macOS Heigh Sierra上安装过程实录
    关于MacOS升级10.13系统eclipse菜单灰色无法使用解决方案
    Struts2中的OGNL详解
    JAR包介绍大全用途作用详解JAVA
    使用SQLQuery 在Hibernate中使用sql语句
    Spring整合Struts的两种方式介绍
    springMVC使用@ResponseBody返回json
    springMVC controller配置方式总结
    安装GitLab出现ruby_block[supervise_redis_sleep] action run
    Mac系统下源码编译安装MySQL 5.7.17
  • 原文地址:https://www.cnblogs.com/chenhongl/p/8729354.html
Copyright © 2011-2022 走看看