• python的基本语法(1)


    1,运行python代码。

    在d盘下创建一个t1.py文件内容是:

    print('hello world')

    打开windows命令行输入cmd,确定后 写入代码python d:t1.py 

    您已经运行了第一个python程序, 即:终端---->cmd-----> python  文件路径。 回车搞定~

    2,解释器。

    上一步中执行 python d:t1.py 时,明确的指出 t1.py 脚本由 python 解释器来执行。

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

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

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

    ps:执行前需给予t1.py 执行权限,chmod 755 t1.py

     3,内容编码。

    python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),而python3对内容进行编码的默认为utf-8。

    ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

    ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

    Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
    注:此处说的的是最少2个字节,可能更多

    UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存

    所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

    报错:ascii码无法表示中文

    1
    2
    3
    #!/usr/bin/env python
      
    print "你好,世界"

    改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

    1
    2
    3
    4
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
      
    print "你好,世界"

     4,注释。

    当行注释:# 被注释内容

    多行注释:'''被注释内容''',或者"""被注释内容"""

    5,变量

    变量是什么?  变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用。

    5.1、声明变量

    1
    2
    3
    4
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
      
    name = "taibai"

    上述代码声明了一个变量,变量名为: name,变量name的值为:"taibai"

    变量的作用:昵称,其代指内存里某个地址中保存的内容

    5.2、变量定义的规则:

    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 以下关键字不能声明为变量名
      ['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']
    • 变量的定义要具有可描述性。

    5.3、推荐定义方式

    复制代码
    #驼峰体(推荐)
    
    AgeOfOldboy = 56
    
    NumberOfStudents = 80
    
    #下划线
    
    age_of_oldboy = 56
    
    number_of_students = 80
    复制代码

    你觉得哪种更清晰,哪种就是官方推荐的,我想你肯定会先第2种,第一种AgeOfOldboy咋一看以为是AngelaBaby

    5.4、变量的赋值

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    name1 = "wupeiqi"
    name2 = "alex"
     
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    name1 = "taibai"
    name2 = name1

    6,常量

    常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量

    在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量:

    例如:

    AGE_OF_OLDBOY = 56
    

    在c语言中有专门的常量定义语法,const int count = 60;一旦定义为常量,更改即会报错

     7,程序交互

    复制代码
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
      
    # 将用户输入的内容赋值给 name 变量
    name = input("请输入用户名:")
      
    # 打印输入的内容
    print(name)
    复制代码

    执行脚本就会发现,程序会等待你输入姓名后再往下继续走。

    可以让用户输入多个信息,如下

    复制代码
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    name = input("What is your name?")
    age = input("How old are you?")
    hometown = input("Where is your hometown?")
    
    print("Hello ",name , "your are ", age , "years old, you came from",hometown)
    复制代码

    8,基础数据类型(初始)。

    python的基础数据类型?

    8.1、整数类型(int)。

    int(整型)

    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

    在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

    复制代码
    >>> b = 2**60
    >>> type(b)      #type是查看数据类型发方法
    <type 'int'>
    复制代码

    8.2、字符串类型(str)。

    在Python中,加了引号的字符都被认为是字符串!

    复制代码
    >>> name = "Alex Li" #双引号
    >>> age = "22"       #只要加引号就是字符串
    >>> age2 = 22          #int
    >>> 
    >>> msg = '''My name is Alex, I am 22 years old!'''  #我擦,3个引号也可以
    >>> 
    >>> hometown = 'ShanDong'   #单引号也可以
    复制代码

    那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合

    msg = "My name is Alex , I'm 22 years old!"
    

    多引号什么作用呢?作用就是多行字符串必须用多引号

    复制代码
    msg = '''
    今天我想写首小诗,
    歌颂我的同桌,
    你看他那乌黑的短发,
    好像一只炸毛鸡。
    '''
    print(msg)
    复制代码

    字符串拼接

    数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?是的,但只能进行"相加"和"相乘"运算。

    复制代码
    >>> name
    'Alex Li'
    >>> age
    '22'
    >>> 
    >>> name + age  #相加其实就是简单拼接
    'Alex Li22'
    >>> 
    >>> name * 10 #相乘其实就是复制自己多少次,再拼接在一起
    'Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'
    复制代码

    注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接

     

    8.3、布尔值(True,False)。

    布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断

    复制代码
    >>> a=3
    >>> b=5
    >>> 
    >>> a > b #不成立就是False,即假
    False
    >>> 
    >>> a < b #成立就是True, 即真
    True
    复制代码

    9,格式化输出。

    现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式

    复制代码
    ------------ info of Alex Li -----------
    Name  : Alex Li
    Age   : 22
    job   : Teacher
    Hobbie: girl
    ------------- end -----------------
    复制代码

    你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势

    只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦

    复制代码
    name = input("Name:")
    age = input("Age:")
    job = input("Job:")
    hobbie = input("Hobbie:")
    
    info = '''
    ------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name 
    Name  : %s  #代表 name 
    Age   : %s  #代表 age  
    job   : %s  #代表 job 
    Hobbie: %s  #代表 hobbie 
    ------------- end -----------------
    ''' %(name,name,age,job,hobbie)  # 这行的 % 号就是 把前面的字符串 与拓号 后面的 变量 关联起来 
    
    print(info)
    复制代码

    %s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦

    age     : %d
    

    我们运行一下,但是发现出错了。。。

    说%d需要一个数字,而不是str, what? 我们明明输入的是数字呀,22,22呀。

    不用担心 ,不要相信你的眼睛我们调试一下,看看输入的到底是不是数字呢?怎么看呢?查看数据类型的方法是什么来着?type()

    name = input("Name:")
    age = input("Age:")
    print(type(age))
    

    执行输出是

    Name:Alex
    Age:22
    <class 'str'> #怎么会是str
    Job:IT

    input接收的所有输入默认都是字符串格式!

    要想程序不出错,那怎么办呢?简单,你可以把str转成int

    age = int(  input("Age:")  )
    print(type(age))
    

    肯定没问题了。相反,能不能把字符串转成数字呢?必然可以,str( yourStr )

    问题:现在有这么行代码

    msg = "我是%s,年龄%d,目前学习进度为80%"%('金鑫',18)
    print(msg)

    这样会报错的,因为在格式化输出里,你出现%默认为就是占位符的%,但是我想在上面一条语句中最后的80%就是表示80%而不是占位符,怎么办?

    msg = "我是%s,年龄%d,目前学习进度为80%%"%('金鑫',18)
    print(msg)

    这样就可以了,第一个%是对第二个%的转译,告诉Python解释器这只是一个单纯的%,而不是占位符。

    10,基本运算符。

    运算符

      计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

    算数运算

    以下假设变量:a=10,b=20

    比较运算

    以下假设变量:a=10,b=20

    赋值运算

    以下假设变量:a=10,b=20

    逻辑运算

    针对逻辑运算的进一步研究:

      1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

    例题:

    判断下列逻辑语句的True,False。

    复制代码
    1,3>4 or 4<3 and 1==1
    2,1 < 2 and 3 < 4 or 1>2 
    3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
    4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
    5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
    复制代码

      2 ,  x or y , x为真,值就是x,x为假,值是y;

                 x and y, x为真,值是y,x为假,值是x。

     

    例题:求出下列逻辑语句的值。

    8 or 4
    0 and 3
    0 or 4 and 3 or 7 or 9 and 6

    in,not in :

    判断子元素是否在原字符串(字典,列表,集合)中:

    例如:

    #print('喜欢' in 'dkfljadklf喜欢hfjdkas')
    #print('a' in 'bcvd')
    #print('y' not in 'ofkjdslaf')

    11,流程控制之--if。

      假如把写程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分叉口,想象现实中,你遇到了分叉口,然后你决定往哪拐必然是有所动机的。你要判断那条岔路是你真正要走的路,如果我们想让程序也能处理这样的判断怎么办? 很简单,只需要在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。

    if...else 语句

    单分支

    if 条件:
        满足条件后要执行的代码

    双分支

    复制代码
    """
    if 条件:
        满足条件执行代码
    else:
        if条件不满足就走这段
    """
    AgeOfOldboy = 48
    
    if AgeOfOldboy > 50 :
        print("Too old, time to retire..")
    else:
        print("还能折腾几年!")
    复制代码

    缩进

    这里必须要插入这个缩进的知识点

    你会发现,上面的if代码里,每个条件的下一行都缩进了4个空格,这是为什么呢?这就是Python的一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序怎么会知道,当你的条件成立后,去执行哪些代码呢?

    在其它的语言里,大多通过{}来确定代码块,比如C,C++,Java,Javascript都是这样,看一个JavaScript代码的例子

    复制代码
    var age = 56
    if ( age < 50){
      console.log("还能折腾")
        console.log('可以执行多行代码')
    }else{
       console.log('太老了')
    }
    复制代码

    在有{}来区分代码块的情况下,缩进的作用就只剩下让代码变的整洁了。

    Python是门超级简洁的语言,发明者定是觉得用{}太丑了,所以索性直接不用它,那怎么能区分代码块呢?答案就是强制缩进。

    Python的缩进有以下几个原则:

    • 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进
    • 同一级别的代码,缩进必须一致
    • 官方建议缩进用4个空格,当然你也可以用2个,如果你想被人笑话的话。

    多分支

    回到流程控制上来,if...else ...可以有多个分支条件

    复制代码
    if 条件:
        满足条件执行代码
    elif 条件:
        上面的条件不满足就走这个
    elif 条件:
        上面的条件不满足就走这个
    elif 条件:
        上面的条件不满足就走这个    
    else:
        上面所有的条件不满足就走这段
    复制代码

    写个猜年龄的游戏吧

    复制代码
    age_of_oldboy = 48
    
    guess = int(input(">>:"))
    
    if guess > age_of_oldboy :
        print("猜的太大了,往小里试试...")
    
    elif guess < age_of_oldboy :
        print("猜的太小了,往大里试试...")
    
    else:
        print("恭喜你,猜对了...")
    复制代码

    上面的例子,根据你输入的值不同,会最多得到3种不同的结果

    再来个匹配成绩的小程序吧,成绩有ABCDE5个等级,与分数的对应关系如下

    A    90-100
    B    80-89
    C    60-79
    D    40-59
    E    0-39
    

    要求用户输入0-100的数字后,你能正确打印他的对应成绩

    复制代码
    score = int(input("输入分数:"))
    
    if score > 100:
        print("我擦,最高分才100...")
    elif score >= 90:
        print("A")
    elif score >= 80:
        print("B")
    elif score >= 60:
        print("C")
    elif score >= 40:
        print("D")
    else:
        print("太笨了...E")
    复制代码

    这里有个问题,就是当我输入95的时候 ,它打印的结果是A,但是95 明明也大于第二个条件elif score >=80:呀, 为什么不打印B呢?这是因为代码是从上到下依次判断,只要满足一个,就不会再往下走啦,这一点一定要清楚呀

    12,流程控制之--while循环。

    12.1,基本循环

     
    while 条件:
         
        # 循环体
     
        # 如果条件为真,那么循环体则执行
        # 如果条件为假,那么循环体不执行

    12.2,循环中止语句 

    如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break 或 continue 语句

    • break用于完全结束一个循环,跳出循环体执行循环后面的语句
    • continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环

    例子:break

    复制代码
    count = 0
    while count <= 100 : #只要count<=100就不断执行下面的代码
        print("loop ", count)
        if count == 5:
            break
        count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
    
    print("-----out of while loop ------")
    复制代码

    输出

    复制代码
    loop  0
    loop  1
    loop  2
    loop  3
    loop  4
    loop  5
    -----out of while loop ------
    复制代码

    例子:continue

    复制代码
    count = 0
    while count <= 100 : 
        count += 1
        if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop
            continue 
        print("loop ", count)
    
    print("-----out of while loop ------")
    复制代码

    输出

    复制代码
    loop  1
    loop  2
    loop  3
    loop  4
    loop  5
    loop  95
    loop  96
    loop  97
    loop  98
    loop  99
    loop  100
    loop  101
    -----out of while loop ------
    复制代码

    12.3,while ... else ..

    与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句

    while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句

    复制代码
    count = 0
    while count <= 5 :
        count += 1
        print("Loop",count)
    
    else:
        print("循环正常执行完啦")
    print("-----out of while loop ------")
    复制代码

    输出

    复制代码
    Loop 1
    Loop 2
    Loop 3
    Loop 4
    Loop 5
    Loop 6
    循环正常执行完啦
    -----out of while loop ------
    复制代码

    如果执行过程中被break啦,就不会执行else的语句啦

    复制代码
    count = 0
    while count <= 5 :
        count += 1
        if count == 3:break
        print("Loop",count)
    
    else:
        print("循环正常执行完啦")
    print("-----out of while loop ------")
    复制代码

    输出

    Loop 1
    Loop 2
    -----out of while loop ------

    四,相关练习题。

    1、使用while循环输入 1 2 3 4 5 6     8 9 10

    2、求1-100的所有数的和

    3、输出 1-100 内的所有奇数

    4、输出 1-100 内的所有偶数

    5、求1-2+3-4+5 ... 99的所有数的和

    6、用户登陆(三次机会重试)

  • 相关阅读:
    PDB文件详解
    C++模板常用功能讲解
    Windows下多线程编程(二)
    关于静态库中使用全局变量可能导致的问题
    js中的函数
    js中字符串的加密base64
    列表推导式
    函数和方法的区别
    xshell连不上虚拟机
    网络编程,并行,并发和协程
  • 原文地址:https://www.cnblogs.com/zsdbk/p/9387639.html
Copyright © 2020-2023  润新知