python语法基础

1.注释

  1.1 单行注释

# 这是注释内容
print("hello world!")
print("hello world!") # 在代码后也可以编写注释

  1.2 多行注释

"""
代码完成的功能是,打印输出 hello world 
1.首先调用 print 函数
2.给 print 函数传入要打印输出的参数
"""
print("hello world!")

  1.3 快捷键注释

快捷键注释 ctrl + /

 

2.变量

  2.1 变量定义语法

  变量在程序中表现为一个唯一不重复的名字,只需要定义一个名字,给这个名字变量赋值即可。

  注意:变量意味着存储的数据是可以变化的。

# 定义一个变量,名字为val ,这个变量临时存储的值为100
val = 100
# 下面将这个变量的值,更改为其他的值 200
val = 200

  注意:这里的等号(=),叫做赋值运算符,表示将 = 号后面的数据存储到名字为 = 号前面的名字变量里。

  在取变量名时,注意:

    1.标识符由字母、下划线和数字组成,且数字不能开头;

    2.python 中的标识符是区分大小写的;

    3.变量名一般用小写加下划线组成;

    4.不能和关键字和已有的名字冲突;

 

  2.2 变量的类型

    

    1) 数字类型:整数和小数

    2)字符串类型:除了数字类型的数据,处理更多的就是字符串类型数据;

      在python 程序里,无论任何字符写到两个单引号或者双引号内部,都称为 字符串。

    3) 布尔类型:用于表示逻辑运算结果,该变量只有两个值,True 或者 False.

    注意:python 中定义变量时 不需要指定类型,python 会根据变量的值来推导变量的类型,可以使用type()函数来查看变量的类型。

  

  2.3 不同类型之间的运算规则

    1)算术运算符

    +   -   *    /    : 加 减 乘 除

    //   取整数

    %  取余数

    **   幂

 

    2)复合赋值运算符

    = 赋值

    +=  加法赋值

    -=  减法赋值

    *=  乘法赋值

    /=  除法赋值

    //=  取整赋值

    %=  取模(余数)赋值

    **=  幂赋值

   注意:

    1.数字和数字之间可以进行所有的运算

    2.数字和字符串之间只能进行乘法运算

    3.字符串和字符串之间可以进行加法运算

 

  2.4 变量的输入和输出

    1.print 函数

      1)普通输出变量 

# 定义一个整数类型变量
my_number = 100
# 定义一个字符串类型变量
my_string = 'hello world!'

# 输出两个变量
print(my_number)
print(my_string)

  注意:变量名不能加引号

 

      2)格式化输出变量

        格式化输出就是让数据按照一定的格式输出,例如:我的名字是xxx.

        进行格式化输出的流程:

          1.先定义输出格式.

          2.在格式中填充数据.

        案例:已知有数据:name = '司马二狗',age = 30,salary = 19988.78,请按照“我的名字是xxx,我的年龄是xxx,我的工资是xxx”的格式将变量输出。

        定义输出格式,需要用到格式化占位符,用来暂时替代不确定的值。

        %  被称为  格式化操作符,专门用于处理字符串中的格式

        1. 包含 % 的字符串,被称为 格式化字符串

        2. % 和不同的 字符 连用,不同类型的数据  需要使用 不同的格式化字符

        常用格式化字符:

          %s  字符串

          %d  有符号十进制整数,%06d  表示输出的整数显示位数,不足的地方使用 0 补全

          %f  浮点数, %.2f  表示小数点后只显示两位

          %%  输出%

# 定义名字、年龄、工资变量
name = '司马二狗'
age = 30
salary = 19988.78
# 格式化字符串
format_string = '我的名字是%s,我的年龄是%d,我的工资是%.2f' % (name,age,salary)
# 输出格式化后的字符串
print(format_string)

 

     2.input函数

      input函数主要用于从键盘获取数据。

      注意:无论输入的数据是小数、整数、还是字符串,input函数统统当做字符串类型来获取。

# 获得键盘输入
your_name = input('请输入您的名字:')
# 输出内容
print(your_name)

 

  2.5变量的类型转换

    变量类型转换就是将变量的类型,由一种类型转换为另一种类型。

    例如:将变量从数字类型转换为字符串类型

    由于各种原因,在拿到数据之后,数据的类型和我们预期的不符,导致无法进行相关的计算(数据类型决定了数据之间的运算规则),因此我们需要先将数据的类型转换为我们预期的类型,再进行计算。

    因为 input接受的任何数据都当做了 string 类型来处理。此时如果想要进行数值运算,就必须将字符串转换为数字类型,再进行计算,因为类型不同,运算规则不同。

    

    使用以下函数完成变量类型的转换:

      1.int(val) 将变量(val) 转换为 int 类型;

      2.float(val) 将变量 (val)转换为 float 类型;

      3.str(val) 将变量(val)转换为 str 类型;

# 输入左操作数
left_number = input('请输入一个数字:')
# 输入右操作数
right_number = input('请输入一个数字:')
# 将字符串类型变量转换为数字类型
left_number_int = int(left_number)
right_number_int = int(right_number)
# 对两个数进行加法计算
result = left_number_int + right_number_int
# 计算结果
print(result)

 

3.分支语句

  3.1 if 分支语句

    1)单个分支语法格式

a = 10
if a >  5 :
    print('a>5')

    

    2)两个分支语法格式

name = 'Obama'
if name == 'Obama':
    print('我是Obama')
elif name =='Trump':
    print('我是Trump')
name = 'Obama'
if name == 'Obama':
    print('我是Obama')
else:
    print('我是其他人!')

    3)多个分支语法格式

day = input('请输入1-7的数字:')
if day =='1':
    print('今天是星期一')
elif day == '2':
    print('今天是星期二')
elif day == '3':
    print('今天是星期三')
elif day == '4':
    print('今天是星期四')
elif day == '5':
    print('今天是星期五')
elif day =='6':
    print('今天是星期六')
elif day == '7':
    print('今天是星期日')
else:
    print('无法确定星期几')

  3.2 if 条件成立

    1.运算符:== 、 != 、 > 、 < 、 >= 、 <=

# 请输入你的用户名
username = input('请输入您的用户名:')
# 请输入您的密码
password = input('请输入您的密码:')
# 判断用户名是否正确
if username =='admin':
#     再判断密码是否合法
    if password == 'admin':
        # 打印欢迎信息
        print('欢迎 %s 登录系统!' % username)

    

    2.多个条件之间的关系

      运算符:and  、or 、not

a = 10
b = 20
c = 30
d = 40
# and 两个条件都为真,则结果为真
result = a > b and c < d
print('result:', result)

# or 有一个条件为真,则结果为真
result = a > b or c < d
print('result:', result)

# not 如果条件为真,则结果就为假
result = not(a > b )
print('reslut:',result)

 

    3.猜拳游戏

import random

user_quan = int(input('请出拳 石头(0)、剪刀(1)、布(2):'))
computer_quan = random.randint(0,2)
if (user_quan == 0 and computer_quan ==1) or\
        (user_quan == 1 and computer_quan == 2) or \
        (user_quan == 2 and computer_quan == 0):
    print('您赢了!')
elif user_quan == computer_quan:
    print('平局!')
else:
    print('您输了!')

 

 4.循环语句

  4.1 while 循环

    1.while循环的语法格式

      while 条件:

        重复执行的一行或多行代码

    

    2.while循环

      1) 计算1-100之间的累加和

i = 1
sum = 0
while i <=100:
    sum = sum + i
    i +=1

print('1~100的累加和为:%d '% sum)

      2)计算1-100之间所有的偶数累加和

i = 1
sum = 0
while i <= 100:
    if i % 2 == 0:
        sum = sum + i
    i += 1
print('1~100的偶数和为:%d ' % sum)

 

  4.2 break 和 continue

  当循环体执行到break语句时,就会马上退出循环

while True:
    name = input('请输入一个名字(stop停止输入):')
    if name == 'stop':
        # 退出循环
        break
    else:
        print(name)

  当循环执行到continue语句时,跳过该次循环,并不退出循环

i = 1
sum =0
while i < 100:
    if i % 2 == 0:
        # i 一定要加 1 ,否则会进入死循环
        i += 1
        # 如果 i 为偶数则跳过该次循环
        continue

    sum = sum + i
    i += 1
print('1~100除偶数之外的累加和为: %d ' % sum)

 

 5.函数

   5.1 函数语法格式

    在python 中,函数使用def 关键字来定义,包含函数的名字(功能的名字),函数的实现(实现功能的代码)。

    函数的行为分为:函数定义和函数调用。

    1.函数定义是实现函  数功能的过程。

    2.函数调用是使用功能。

    注意:函数不调用是不会自动执行的。

    

    1-100这个功能,可以写成这样的一个函数(功能代码块):

def my_sum():
    i = 1
    s = 0
    while i <= 100:
        s = s + i
        i += 1
    print('1~100的累计和为:%d ' % s)

# 函数调用
my_sum()

 

   5.2 函数的参数

    我们可以将我们要开始和结束数字传递给函数,让函数按照我们传递的参数来计算。

def my_sum(start,end):
    my_start = start
    my_end = end
    my_sum = 0
    while my_start <= my_end:
        my_sum = my_sum + my_start
        my_start += 1

    print('%d~%d的累计和为:%d' % (start,end,my_sum))

# 函数调用
my_sum(2,50)

函数参数的作用就是让函数依据我们给定的值来进行运算,这样可以增强函数的通用性。函数可以有多个参数。

例如:我们想要编写一个具有加法功能函数,很显然需要两个参数:

def my_add(num1,num2):
    result = num1 + num2
    print('num1 + num2 = ',result)
my_add(10,20)
def my_add(num1,num2):
    result = num1 + num2
    print('num1 + num2 = ',result)
my_add(10,20)

my_add(num1=10,num2=20)
my_add(num2=20,num1=10)

    1.按照从左向右的顺序传递叫做位置参数。

    2.按照形参名字传递叫做关键字参数。

def my_add(num1,num2,num3,num4):
    result = num1 + num2 + num3 +num4
    return result

my_add(100,200,300,num4=10)

    注意:需要保证位置参数在关键字参数之前即可。

 

  5.3 函数的返回值

    return 语句将函数的运行结果返回给函数的调用者:

def my_add(num1,num2):
    result = num1 + num2
    return result

# 使用一个变量保存函数执行的结果
my_add_result = my_add(10,20)
#使用结果进行下一步计算
finish_result = my_add_result + 100
# 输出最终结果
print('最终结果:',finish_result)

  注意:

    1.只要函数执行碰到return 就会停止执行;

    2.函数中可以编写多个return,但有且只有一个return 会执行;

    3.return 后面可以跟上要返回的值,单独使用相当于 return None.

    4.break 用在循环中,用来终止循环执行。return 用在函数中,用来终止函数执行。

 

  5.4 局部变量 和 全局变量

    1.全局变量:在函数外部定义的变量。全局指的是该变量在当前python 文件范围内是可见的。全局变量可以被当前python 文件内的所有函数直接使用。

    2.局部变量:在函数内部定义的变量,该变量只能在定义的函数内部使用。

    注意:python 解释器搜索同名变量时,是“就近原则”

 

  5.5 函数的缺省参数(默认参数)

    默认参数指的是当函数调用中省略了实参时默认使用的值。

    默认参数的语法与使用:

      1.在函数声明或定义时,直接对参数赋值。这就是设置形参的默认参数。

      2.在函数调用时,省略部分或全部的参数。这时可以用默认参数来代替。

def my_function(a ,b=20 ,c=30):
    return a+b+c

my_function(10)
my_function(10,100)
my_function(10,100,1000)

  注意:带有默认值的参数,一定要位于参数列表的最后面。

  

  5.6 函数文档及作用

    函数也需要添加注释,方便函数功能、参数以及返回值的含义能够被调用者知悉。

# 单行函数文档字符串
def my_function(param):
    """函数做了什么事,返回什么结果."""
    return param + 10

# 多行函数文档字符串
def my_add(num1,num2):
    """
    计算两个整数的和
    :param num1: 加法运算的左操作数
    :param num2: 加法运算的右操作数
    :return: 返回两个操作数相加的结果
    """
    result = num1 + num2

    return result

  注意:可以通过 ctrl + q 快捷键查看函数信息,也可以通过 help() 函数来查看函数信息。

  

  5.7 单一职责原则

    单一职责原则说的是一个函数只负责一个事情,这是因为,如果一个函数承担的职责过多,就等于把这些职责混合在一起,一个职责的变化可能会影响其他职责的能力。

    

============================================================================================

6.容器

  根据不同容器的特性,将常用容器分为序列式容器和非序列式容器:

    1.序列式容器中的元素在存放时都是连续存放的,也就是序列式容器中,除了第一个元素的前面没有元素,最后一个元素的后面没有元素,其他所有的元素前后都有一个元素。包括:字符串、列表、元组。

    2.非序列式容器在存储元素时不是连续存放的,容器中的任何一个元素前后都可能没有元素。包括:字典、集合。

      1)序列式容器支持根据索引(下标)访问元素,而非序列式容器不支持索引(下标)的方式访问元素。

      2)序列式容器支持切片操作,而非序列式容器不支持切片操作。

 

  1.字符串

    1.1 字符串语法格式

      一般使用两个单引号或者两个双引号,很少使用三引号。

    1.2 字符串遍历

      字符串属于序列式容器,支持依据索引的操作。

      1)可以使用 while 循环来访问字符串容器中的每一个字符元素。

        注意:序列式容器的索引都是以 0 开始的,并不是从 1 开始。

my_string = '我今年10岁了!'

i = 0
while i < len(my_string):
    print(my_string[i], end=' ')
    i += 1

      2) python 是一门简单易用的语言,对于容器的遍历,提供了另外一种简单方式,for 循环。

my_string = '我今年10岁了!'
for v in my_string:
    print(v, end=' ')

    1.3 字符串替换

      使用字符串的 replace 方法,该方法默认会将字符串中所有指定字符或子串替换为新的字符串,也可以指定第三个参数,替换多少次。

poetry = '远看泰山黑乎乎,上头细来下头粗,茹把泰山倒过来,下头细来上头粗。茹'
# 将所有的‘茹’ 替换为 ‘如’
right_poetry = poetry.replace('', '')
print(right_poetry)
# 只替换第一次出现的‘茹’
right_poetry = poetry.replace('' , '' , 1)
print(right_poetry)

    1.4 字符串查找 和 切片

      例如:

      现在有一邮箱地址如下:

user_email = 'simagoushen@itcast.cn'

      a. 我们希望从邮箱地址字符串中获取用户名和邮箱后缀名, 那么这个问题如何解决?

        1.由分析可知,@ 符号之前为用户名,@ 符号之后的内容为邮箱后缀名。

        2.首先获得@ 符号的位置,从开始位置截取到 @ 符号位置,即可获得用户名。

        3.从 @ 符号位置开始截取到字符串最后,即可获得邮箱后缀名。

      b. 如何获得@ 符号的位置?

        我们可以使用字符串提供的 find 方法,该方法可返回查找字符串第一次出现的位置,查找字符串不存在则会返回 -1.

        注意: find 方法默认从字符串 开始位置 ( 0 位置 )开始查找,我们也可以指定从哪个位置范围开始查找,设置 find 的第二个参数表示从哪个位置开始查找,第三个参数,表示查找结束位置。 

poetry = '远看泰山黑乎乎,上头细来下头粗,茹把泰山倒过来,下头细来上头粗。'
# 从 10 位置开始查找 ‘上’
position = poetry.find('', 10 ,100)
print(position)

      c. 如何获得指定范围的字符串?

        字符串属于序列式容器,可以根据索引获得某一个字符,也可以根据由两个索引标识的区间获得区间内的字符序列。

poetry = '远看泰山黑乎乎,上头细来下头粗,茹把台上倒过来,下头细来上头粗。'
# 从 0 位置开始到 7 位置之前,不包含 7 位置字符
print(poetry[0:7])
# 起始位置不写,默认就是0
print(poetry[:7])
# 从 0 位置开始到最后,结束位置不写默认字符最后一个位置的下一个位置。
print(poetry[9:])
# 步长,每个2个字符选取一个字符串,组成一个序列
print(poetry[0:7:2])
# 如果步长为负数,那么起始位置参数和结束位置参数就会反过来。
print(poetry[6: : -1])
# 位置也可以使用负数
print(poetry[-3: -1])
print(poetry[-3: ])
print(poetry[: : -1])

      d. 下面我们看看你如何解决这个问题?

  

      

      

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

  

 

posted @ 2019-03-11 21:24  一纸流年  阅读(944)  评论(0编辑  收藏  举报