Python-02

Day01回顾

python的解释执行器

$ python3 (CPython)
python 的交互模式

表达式

数字类型
    整数
        十进制-100
        八进制 0o177
        十六进制: 0x 1a2b
        二进制: 0b 1100
    浮点数
    3.1 3.0
    复数
    1+1j  
    布尔型数
    True,False
    None 空值

复合赋值算术运算符

运算符  说明
y+=x    作用等同于y=y+x
y-=x    作用等同于y=y-x
y*=x    作用等同于y=y*x

比较运算符

< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
语法:
    左表达式 > 右表达式
说明:
    比较运算符通常返回布尔类型的值
示例:
     100 < 200 #True
     100 >= 200 # False
     1+5==2+5 # False
    0<=100<=200 # True `**python独有的表达式**`比较两个结果都为True才为True

数值对象的构建(创建)函数

float(obj)用字符串或数字转换为浮点数,如果不给出参数,则返回0.0
或int(x=0,base=10(默认))
用数字或字符串转换为整数,如果不给出参数则返回0
base为二进制转换的底数
eg: 
    >>> int("123")
    123
    >>> int("123",4)
    27
complex(r=0.0, i=0.0)用数字创建一个复数(实部为r,虚部为i)
bool(x) 用x创建一个布尔值(True,False)
布尔值返回假的情况:
    None 空值
    False 布尔假值
    0 0.0 0j 所有数字为0
    -------以下后面会讲-------
    ''空字符串
    []空列表
    ()空元
    组
    {}空字典
    set()空集合
    ...# 一切空的容器对象bool(x)取值都为False
练习:
    将数字3.14 用变量pi绑定
    将pi变量转为整数用变量i绑定
    将pi变量,与i变量相减,结果用变量f绑定
    1. 判断f是否等于0.15 why?
        不等于,计算机在存储小数时会出现精度丢失的问题,()
        浮点数只能近似等,不能精确等
    2. 删除所有的变量

函数调用

函数名(传参列表)
    说明:
        函数调用表达式,一定会返回一个对象的引用关系

预置数值型函数

函数 描述
abs(x) 取x的绝对值
round(num1,nums) 表示对num1保留多少位小数 (默认为0,负数表示从小数点向左进行四舍五入)
pow(x,y,z=None) 相当于xy 或xy % z
help() 查看函数帮助>>>help(函数名)

转义字符:

概念: 
    在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要使用转义字符.
转义:
    就是不采用符号本来的含义,而采用另一种含义.
Python中常用转义字符:
转义字符 描述
\ (在行尾时)续行符
\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页

原始字符串:

用转义符能够让字符串中的某些符号表示原来的含义,而不是被解析成某种具有特定能力的符号
eg:
    dos = "c:\news"
    dos
    'c:\news'# 这里貌似没有任何问题
    print(dos) # 当用print来打印这个字符串的时候就出问题了
    c:
    news
如何避免:
    我们可以在定义的时候,显示指定不需要进行转义
    dos = r"c:\news" 
    dos
    c:\\news
    print(dos)
    c:\news
    状入 r"c:\news" ,由r开头引起的字符串就是声明了后面引号里的东西是原始字符串,在里面放任何字符都表示该字符的原始含义

input和print

input
    解释: 基本输入函数()
    input("提示字符串")
    返回用户输入的字符串('提示字符串可以为空')
    是阻塞函数()必须等待用户输入,程序才会向下走
    类似java的Scanner函数,
        可以获取用户输入的数值,并赋值,如果里面有参数,则为写入之前的提示符
eg: 
    name = input("what's your name:")
    age = input("How old are you:")
    print("姓名:",name,"年龄:",age)
示例输入:
    what's your name:胡贵全
    How old are you:23
    姓名: 胡贵全 年龄: 23
注:
    输入的不论是数字,字符串..都会当做字符串
print: 
    解释:基本输出函数
    作用:
        将一系列的值字符串形式输出到标准设备上,默认为终端
    格式:
        print(value...,sep=' ',end='\n')
    sep:(separator)
        表示将每个元素用指定分割符来隔开
        eg:
            >>> print(1,2,3,4,sep="-")
            >>>1-2-3-4
    end:
        表示输出完毕后在流末尾自动追加一个字符串,默认为换行符'\n'
        eg:
            >>> print(1,2,3,4,end="$")
            1 2 3 4$>>>
    特别提醒:
        print的返回值默认是以"\n"结尾的,所以,每个输出语句之后自动换行,
        可以加一个参数,不换行:print("hello",**end=""**)

练习:

    1. 今天是小明的20岁生日
    假设每年有365天,结算他过了多少个星期天,余多少天
    ```
    >>> days = 20 * 365
    >>> divmod(days,7) # divmod divide取除数,mod 取余数
    (1042, 6)
    ```
    2. 分三次输入当前的小时,分钟,秒数
    在终端打印出距离0:0:0过了多少秒
    hour = int(input("请输入小时:"))
    minute = int(input("请输入分钟:"))
    seconds = int(input("请输入seconds:"))

索引和切片

    序列:
        在Python中,把像字符串这样的对象类型统称为序列,顾明思义,序列就是"有序排列"
    索引:python中的索引是从0开始的
        eg:
            long = "hello"
            long[0]
            h
    反向:通过字符,找到该字符在字符串的索引位置
        eg: 
            long = "hello"
            long.index("o")
    范围切片:
        eg:
            long = "hello"
            long[0:2]#**包左不包右,左闭右开**
            "he"
    切片:
        概念:
            不管是得到一个字符还是多个字符,通过索引得到字符的过程都称之为切片
        eg:
            long = "study python"
            b = long[1:] # 得到从1到最末尾的字符,这时最后结尾不用写
            'tudy python'
            c = long[:5] # 得到从第一个到10号之前的字符
            'study'
            # 在"切"字符的时候,如果冒号后面1数字,所得到的切片不包含该数字所对应的字符(前包括,后不包括)
            long[1:12]不包括12号
            long[:]与long所表示的还是同一个对象

基本操作

函数 描述
len() 返回序列长度
+ 连接2个序列(列表和元组都可以如此实现拼接)
* 重复序元素
in 判断元素是否在于序列中返回值为(返回值为True,False)
max() 返回最大值
min() 返回最小值
cmp(str1,str2) 比较两个序列值是否相同(python3 中没有cmp这个函数了可以使用(a>b)-(a

cmp(str1,str2)比较函数

将两个字符串进行比较,首先将字符串中的符号转化为对应的数字(参照ASCII理解),然后再比较,如果返回的数值小于0,说明第一个小于第二个,等于说明这两个数值相等,大于0,则第一个数值大于第二个数值.

ord函数

概念:
    ord()是一个内建函数,能够返回某个字符(是一个字符所对应的ASCII值(十进制的)
eg:
    ord('a')
    97
    ord('b')
    98
chr()函数:
    概念:  chr(i, /)Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff
    可以根据整数值,得到相应的字符,
    chr(97)
    'a'

strip()函数

概念:
    strip()函数,常用来去除所输入信息中的空格
    s.strip():去掉字符串左右空格
    s.lstrip():去掉字符串的左边空格
    s.rstrip():去掉字符串的右边空格
注意: 
    原来的值没有变化,生成的是一个新值

capitalize() 函数

概念:
    把字符串的第一个字母变成大写

istitle()函数

概念:
    只有当每个单词的首字母为大写,其他为小写的时候返回True
    eg:
        ("hello,hl") #False
        ("Hello,Hel") #True
title()函数
    这样就把所有的单词的第一个字母转化为大写

join()连接函数

概念:
    用"+" 能够连接字符串,但不是什么情况下都能够如愿,比如,将列表(列表是另外一种类型)中的每个字符串元素拼接成一个字符串,并且用某个符号连接,但如果用"+"会计较麻烦
eg: 
    >>> b = "www.baidu.com"
    >>> c = b.split(".")
    >>> c
    ['www', 'baidu', 'com']
    >>> ".".join(c)
    'www.baidu.com'

Day02-PM

字符串格式化输出

概念:
    格式化字符串,是C,C++等程序设计语言,printf类函数中用于指定输出参数的格式与相对位置的字符串参数.
    就是要先制定一个模板,在这个模板中某个或者某几个地方流出空位来,然后在那些空位上填充字符串,空位需要符号来表示,这个符号通常就称为占位符()
转换说明:
    用于把随后对应的0个或多个函数参数转换为相应的格式输出;格式化字符串以外的其他字符原样输出
eg:
    "I like %s" % "python"
    'I like python'
详解:
    在这个字符串中,有一个符号"%s",这是一个占位符,可以被其他的字符串代替,
    常见占位符:
占位符 说明
%s 字符串(采用str()的显示)
%r 字符串(采用repr()的显示)
%c 单个字符
%d 十进制整数
%f 浮点数(限定小数输出位数eg: %.2f)
第二种方式:
    format()函数
    eg:
        >>> s1="I like {}".format("python")
        >>> s1
        'I like python'
    原字符串中使用{}来表示
    eg:
        >>> s1 = "name:{0},age:{1}".format("hgq",1)
        >>> s1
        'name:hgq,age:1'
    eg: 
        >>> s1 = "name:{name},age:{age}".format(name="hgq",age=1)
        >>> s1
        'name:hgq,age:1'
注:
    推荐使用string.format()

列表:list:[]

比较:
    python中的list与Java中的数组的区别:
        java中:数组的元素必须是基本数据类型中的某一个,要么是int类型,要么都是char类型,不能有一个int类型,一个char类型
        python中:尽管元素都是被[]包裹的,但是list中的元素是任意类型的,可以是int,str,list,dict,
    金句:
        列表是Python中的苦力,什么都可以干.
列表的索引和切片:
    概念:
        在列表中也有类似的操作,只不过是以元素为单位,而不是以字符为单位进行索引
    eg:
        a=[1,2,3,4,5]
        a.index(3) # 2
        a[2] # 3
        a[-1] # 5 负数表示是从右边第一个向左边寻找
注意:
    序列的切片

语句:statement

语句是由一些表达式组成,通常一条语句可以独立执行来完成一部分事情,并形成结果.
    一条语句建议写在一行内,
    多行语句写在一行内需要用(;)分开
    示例:
        x = 100
        y = 200
        z = 300
        print(x+y)
        # 写在一行为
        x = 100;y = 200 ;print(x + y)

显示换行

拆行符 \
    拆行符必须放在一行的末尾,来示意解释执行器的下一行也是本行的语句
示例:
    >>> str ="sadfj"+\
    ... "asdjf"
    >>> str
    'sadfjasdjf'
    >>>

隐式换行

所有括号的内容换行,称为隐式换行(),{},[],"",'''

if语句

问题:
    有两条语句
        print("是偶数")
        print("是奇数")
    如何只让其中一条语句执行并打印结果
作用:
    让程序根据条件选择性的执行某条语句或某些语句
语法:
    if  真值表达式:
        语句块1
    elif    真值表达式2:
        语句块2
    elif    真值表达式3:
        语句块3
    ...
    else:
        语句块4
说明:
    elif 子句可以有0个,1个或多个
    else子句可以有0个或1个,且只能放在if语句的最后.
eg:
    #输入一个数判断这个是奇数还是偶数
    x = int(input("请输入一个整数:"))
    if(x&1!=0):
        print(x,'是奇数')
    else:
        print(x,"是偶数")

练习:

1. 任意输入一个整数
    1) 判断这个数是否大于100
    2) 判断这个数是否小于0
    3) 判断这个数是否在80~100之间
    
    解答:
        #输入一数判断
        x = int(input("请输入一个整数:"))
        # 如果&1判断结果
        if(x>100):
            print(x,'>100')
        elif(80<=x<=100):
            print(x,"在80~100之间")
        elif(x<0):
            print(x,"< 0")
            
2. 输入一个季度 1~4 输出这个季度有哪几个月,如果用户输入的不是1~4的整数,则提示用户您输错了?
    解答:
        #输入一个季度(1~4)
        season = input("请输入一个季度:")
        # 首先判断用户输入的是否是整数
        if(season.isdigit()):
            # 1,123,2,456 ,3,789,4,10,11,12
            if(1==int(season)):
                print(1,2,3,"月")
            elif(2==int(season)):
                print(4,5,6,"月")
            elif(3==int(season)):
                print(7,8,9)
            elif(4==int(season)):
                print(10,11,12)
            else:
                print("您的输入有误")
        else:
                print("您的输入有误")

3. 输入一年中的月份(1~12)输出这个月在哪个季度,如果输入的是其他数,则提示您输错了?
    解答:
        # 输出这个季度有哪几个月, 如果用户输入的不是1~4
        # 的整数, 则提示用户您输错了?
        season = int(input("请输入月份:"))
        if(1<=season<=3):
            print("春季")
        elif(4<=season<=6):
            print("夏季")
        elif(7<=season<=9):
            print("秋季")
        elif(10<=season<=12):
            print("冬季")
        else:
            print("您的输入有误:")

if语句的真值表达式

    if 100:
        print("真值")
    等同于:
    if bool(100):
        print("真值")

if语句的嵌套:

if 语句本身是由多条子句组成的一条复合语句
if 语句可以作为语句嵌套到另外一个语句的内部

条件表达式:

语法:
    表达式1 if 真值表达式2 else 表达式2
作用:
    根据真值表达式的取值(True/False)
    来决定执行表达式1或者表达式2 并返回结果
eg:
    # 商场促销,满100 -20
    money = int(input("请输入商品金额:"))
    pay = money -20 if money >=100 else money
    print('需要支付:',pay,"元",sep="")
        请输入商品金额:100
        需要支付:80元

练习:

    1. 写一个程序,输入一个数,用if语句计算出这个数的绝对值并打印出来?
        if (x < 0):
            print(-x)
        else:
            print(x)
    2. 写一个程序,输入一个数,用条件表达式计算这个数的绝对值,并打印出来?
        x= x if x >= 0 else -x
        print(x)

pass 语句

作用:
    通常用来填充语法空白
语法:
    pass
示例:
    a =100
    if(a<100):
        print("error")
    else:
        # nothing todo
        pass

布尔运算:

运算符:
    not and or
布尔非操作 not
语法:
    not x
作用:
    对x进行布尔取非,如bool(x)
    为True,则返回False,否则返回True
示例:
    not True # 返回False
    not False # 返回True
    
布尔与操作 and
语法:
    x and y
注:
    x,y 代表表达式
作用:
    优先返回假值对象
    当x的布尔值为False的是返回x,否则返回Y
eg: 
    True and True # True
    True and False # False
    False and True # False
    False adn False # False
    左边为假返回x,否则返回y
    >>> 0.0 and 2
    0.0
    >>> 1 and 2
    2
    >>>
    
布尔或操作 or
语法:
    x or y
注:
    x,y 代表表达式
作用:
    优先返回真值对象
    当x的布尔值为True的是返回x,否则返回Y
eg: 
    True and True # True
    True and False # True
    False and True # True
    False adn False # False 
    
    >>> 1 or 2
    1
    >>> 0 or 2
    2
    >>> 0.0 or 0
    0
    score = int(input("请输入学生成绩:"))
    if(score<0 or score>100)
        print("成绩不合法")

小结:

运算符:
    < <= > >= == !=
    not and or
    + -
函数:
    id 
    abs
    round
    pow
    float
    int
    complex
    bool
    input
    print
语句:
    if 语句
    pass 语句
表达式:
    if _else 条件表达式

思考:

score  = input("请输入学生成绩:") or '0'
score = int(score)
当用于直接敲回车的话,会出现异常

练习:

1. 北京出租车计价器
    收费标准:
        3公里以内收费13元
        基本单价:2.3元/公里(超出3公里以外)
        空驶费:超过15公里后加收单价的50%
        空驶费(3.45元/公里)
    要求:
        输入公里数,打印出费用金额(以元为单位,进行四舍五入)
2. 输入一个学生的三科成绩(只要三个数,不要求科目)
    1) 打印出最高分是多少?
    2) 打印出最低分是多少?
    3) 打印出平均分是多少?

3. 给出一个年份,判断是否是闰年并打印(每四年一闰,每百年不一闰,四百年又闰)
如:
    2016年: 闰年
    2200年: 闰年
    2400年: 闰年

4. BMI指数(Body Mass Index)又称身体质量指数
    BMI 值计算公式:
    BMI = 体重 (公斤) / 身高的平方(米)
    例如:
        一个69公斤的人,身高是173公分
        BMI = 69 / 1.73 ** 2 = 23.05
    标准表:
        BMI < 18.5  体重过轻)
        18.5 < BMI < 25 体重正常
        BMI > 24    体重过重
    输入身高和体重,打印BMI的值,并打印体重状况
答案:
    ```
    1. 
    km = input("请输入行驶路程:")
    # 判断输入的km是否是数字,并并且有效
    if(km.isdigit() and int(km)>=0):
        km= int(km)
        if(0<=km<=3):
            print(13,"元")
        elif(km<=15):
            print(13+2.3*(km -3),"元")
        else:
            print(13+2.3*12+(km-15)*3.45,"元")
    else:
        print("您的输入有误")
        
    2.
    chinese = int(input("请输入语文成绩:"))
    english = int(input("请输入英语成绩:"))
    math = int(input("请输入数学成绩:"))
    print("三科最高分是:", max(max(chinese, english), math))
    print("三科最低分是:", min(min(chinese, english), math))
    print("三科平均分是:", ((chinese + english + math) / 3))
    
    3.
    year = int(input("请输入一个年份:"))
    if(year %4==0 and year % 100 !=0 or year %400 == 0):
        print("是闰年!")
    else:
        print("不是闰年!")
    
    4.
    height = float(input("请输入你的身高: "))/100
    weight = float(input("请输入你的体重: "))
    BMI= weight/(height**2)
    print("您的身体指标是:",BMI,end=" ")
    if(BMI<18.5):
        print("体重过轻!")
    elif(BMI<25):
        print("体重标准!")
    else:
        print("超重!")
    ```

你可能感兴趣的:(Python-02)