欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python分支循环

程序员文章站 2022-04-06 12:26:13
...

程序结构

  • 程序三种结构
    • 顺序
    • 分支
    • 循环

分支结构

  • 分支的基本语法

      if 条件表达式:
          语句1
          语句2
          语句3
          ......
    
  • 条件表达式就是计算结果必须为布尔值的表达式

  • 表达式后面的冒号不能少

  • 注意if后面的出现的语句,如果属于if语句块,则必须同一个锁紧等级

  • 条件表达式结果为True执行if后面的缩进的语句块

#if 语句联系
#如果你爱我,我就爱你
a = "你爱我"#字符串非空就为True,空字符串为False
if a:
    print("我爱你")
    print("一辈子")
else:
    print("我继续爱你")
print("从此幸福快乐")
我爱你
一辈子
从此幸福快乐

双向分支

  • if…else…语句

      if 条件表达式:
          语句1
          语句2
          ...
      else:
          语句1
          语句2
          .....
    
  • 双向分支有两个分支,当程序执行到if … else…语句的时候,一定会执行if或else中的一个,也仅执行一个

  • 缩进问题,if和else一个层级,其余语句一个层级

# input的作用是
# 1. 在屏幕上输出括号内的字符串
# 2. 接受用户输入的内容并返回到程序
# 3. input返回的内容一定是字符串类型

#input负责接受用户输入并把内容返回给变量
gender = input("请输入您的性别:")
#打印输入内容
print(gender)

if gender =="man":
    print("走,抽烟喝酒烫头")
    print("一起去玩啊")
else:
    print("你到底是个啥子啊")
    print("对不起,我是男生")
请输入您的性别:man
man
走,抽烟喝酒烫头
一起去玩啊
# 考试成绩判断
# 90以上: 输出优秀
# 80-90:良
# 70-80:中
# 60-70:平
# 60以下: 输出:我没你这撒学僧
score = input("请输入成绩")
score = int(score)#需要把str转换成int
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良")
elif score >= 70:
    print("中")
elif score >= 60:
    print("平")
else:
    print("我没你这撒学生")
请输入成绩70
中

多路分支

  • 很多分支的情况

  • 很多分支的情况,简称多路分支

      if  条件表达式:
          语句1
          ....
      elif 条件表达式:
          语句1
          ...
      elif 条件表达式:
          语句1
          ...
          
      .....
      else:
          语句1
          ....
    
  • elif 可以由很多歌

  • else可选

  • 多路分支只会选一个执行

if语句其他:

  • if语句可以嵌套使用,但不推荐
  • python没有switch-case语句

循环语句

  • 重复执行某些固定动作或者处理基本固定的事物
  • 分类
    • for循环
    • while循环

for循环

  • for循环

      for 变量 in 序列:
          语句1
          语句2
          ...
    
# 列表知识以后会将
# [1,2,3,4,5,6,7]

for i in range(1,8):
    print(i)
1
2
3
4
5
6
7
# 打印学生列表姓名
# 如果是jingjign,那肯定是我的最爱呀,
# 如果是别的学生,那要冷酷的拒绝他'
stu_list = ["王大眼","张三","李四"]
for stu in stu_list:
    if stu == "张三":
        print("请答到")
    else:
        print("快点来")
快点来
请答到
快点来

for-else语句

  • 当for循环结束的时候,会执行else语句
  • else语句是可选语句
# for-else语句
# 打印列表中的同学,
# 如果没有在列表中,或者列表结束了,我们需要打印提示语句,表示不在爱了

# 打印学生列表姓名
# 如果是jingjign,那肯定是我的最爱呀,
# 如果是别的学生,那要冷酷的拒绝他
stu_list = ["王大眼","张三","李四"]
for stu in stu_list:
    if stu == "王大眼":
        print("请答到")
    else:
        print("快点来")
else:
    print("表示不在爱了")
请答到
快点来
快点来
表示不在爱了

break,continue,pass

  • break: 无条件结束整个循环,简称循环猝死
  • continue:无条件结束本次循环,从新进入下一轮循环
  • pass:表示略过,通常用于站位,没有跳过功能
# 在数字1-10中,寻找数字7,一旦找到,打印出来,其余则什么都不做
# for 循环中的变量表示,一般用i,k,m,n,或者indx,idx,item之类
# 在python中,如果循环变量名称不重要,可以用下划线(_)代替
for i in range(15):
    if i == 7:
        print("哈哈哈,找到了")
        break
    else:
        print(i)
0
1
2
3
4
5
6
哈哈哈,找到了
# continue语句 版本 2
# 在数字1-10中,寻找所有偶数,找到偶数后打印偶数
# 本案例完整显示continue的用法和作用
dig_list = [1,10]
for dig in range (1,10):
    if dig % 2 == 0:
        continue
    print(dig)
    print("哈哈,你是偶数")
 
1
哈哈,你是偶数
3
哈哈,你是偶数
5
哈哈,你是偶数
7
哈哈,你是偶数
9
哈哈,你是偶数
#pass案例

age = 19
if age >19:
    pass
else:
    print("你还小")
你还小
#pass案例二
ages = [2,15,156,23,1235,52]
for age in ages:
    pass
    print(age)

2
15
156
23
1235
52

range 函数

  • 生成有序数列
  • 生成数字队列可以定制
#range案例1
#生成一个一到十的数字序列
#range的生成序列的两个数字是左包括右不包括     python 特点
dig_list = range(1,11)
for dig in dig_list:
    print(dig)
    
#一般在python中,连个表示范围的数字都是左包括右不包括,randint函数是个特例
#range函数在python2.x和python3.x有严重区别
1
2
3
4
5
6
7
8
9
10
#range 案例
#打印1到9 的数字
for i in range(1,10):
    print(i)
1
2
3
4
5
6
7
8
9

while 循环

  • 一个循环语句

  • 表示当条件成立的时候,就循环,适应于不知道具体循环次数,但能确定在某个条件成立的情况下就循环

  • while语法
    while 条件表达式:
    语句块

      #另外一种表达方法
      while  条件表达式:
          语句块1
      else:
          语句块2
    
# 如果说年利率是6.7%,本利是每年翻滚, 则多少年后本钱
cost = 10000
year = 0 #存放需要翻本的年数
while cost < 20000:
    cost = cost * (1 + 0.067)
    year += 1
print(year)

#年利率案例2
#本案例循环没有被执行,why?如何改正?
while cost < 20000:
    cost = cost * (1 + 0.067)
    year += 1
else:
    print(year)

#案例三
year = 0
cost = 10000
while cost <= 20000:
    cost *= (1 + 0.067)
    year += 1
    print("第{1}年赚了{0}钱".format(cost,year))
11
11
第1年赚了10670.0钱
第2年赚了11384.89钱
第3年赚了12147.677629999998钱
第4年赚了12961.572031209998钱
第5年赚了13829.997357301068钱
第6年赚了14756.607180240238钱
第7年赚了15745.299861316334钱
第8年赚了16800.23495202453钱
第9年赚了17925.85069381017钱
第10年赚了19126.88269029545钱
第11年赚了20408.383830545245钱

函数Function

  • 函数是代码的一种组织形式
  • 函数应该能完成一项特定的工作,而且一般一个函数值完成一项工作
  • 有些语言,分函数和过程两个概念,通俗来说,有返回结果的叫函数,无返回结果的叫过程,python不加以区别
  • 函数的使用
    • 函数使用前需要先定义
    • 使用函数,俗称调用
# 定义一个函数
# 只是定义的话不会执行
# 1. def关键字,后跟一个空格
# 2. 函数名,自己定义,起名需要遵循便令命名规则,约定俗成,大驼峰命名只给类用
# 3. 后面括号和冒号不能省,括号内可以由参数
# 4. 函数内所有代码缩进

def func():
    print("我是一个函数")
    print("爱生活,爱python")
print("function is over")
function is over
# 函数的调用
# 直接写出函数名字,后面小括号不能省略,括号内容根据情况
func()
我是一个函数
爱生活,爱python

函数的参数和返回值

  • 参数: 负责给函数传递一些必要的数据或者信息
    • 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参
    • 实参(实际参数): 在调用函数的时候输入的值
  • 返回值: 函数的执行结果
    • 使用return关键字,返回结果
    • 如果没有return,默认返回一个None,一般return None表示函数结束
    • 函数一旦执行return语句,则无条件返回,即结束函数的执行
# 形参和实参的案例
# 参数person只是一个符号
# 调用的时候用另外一个

def hello(person):
    print("{0},你好吗?".format(person))
    print("{},你看见我家女朋友了吗?".format(person))
    return None
    
p = "小明" # 调用函数,需要把P作为参数传入
hello(p)

a = ("伍六七")
hello(a)
小明,你好吗?
小明,你看见我家女朋友了吗?
伍六七,你好吗?
伍六七,你看见我家女朋友了吗?
 #  help  负责随时为你提供服务
help(None)#等价于help(print()),为什么呢?
Help on NoneType object:

class NoneType(object)
 |  Methods defined here:
 |  
 |  __bool__(self, /)
 |      self != 0
 |  
 |  __repr__(self, /)
 |      Return repr(self).
 |  
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |  
 |  __new__(*args, **kwargs) from builtins.type
 |      Create and return a new object.  See help(type) for accurate signature.
#九九乘法表
#version 1.0
for i in range(1,10): #控制外循环,从1到9
    for j in range(1,i + 1):#内循环,每次从第一个数字开始,打印到跟行数相同的数量
        print(i*j,end=" ")
    print("-----------------")
    
1 -----------------
2 4 -----------------
3 6 9 -----------------
4 8 12 16 -----------------
5 10 15 20 25 -----------------
6 12 18 24 30 36 -----------------
7 14 21 28 35 42 49 -----------------
8 16 24 32 40 48 56 64 -----------------
9 18 27 36 45 54 63 72 81 -----------------
#改造上面函数
def printLine(line_num):
    '''
    line_num:代表行号
    
    打印一行九九乘法表
    
    '''
    for i in range(1,line_num + 1):
            print(line_num * i,end=" ")
    print()
def jiujiu():
    for j in range(1,10):
        printLine(j)
    return None
jiujiu()
1 
2 4 
3 6 9 
4 8 12 16 
5 10 15 20 25 
6 12 18 24 30 36 
7 14 21 28 35 42 49 
8 16 24 32 40 48 56 64 
9 18 27 36 45 54 63 72 81 

参数详解

  • 参数分类
    • 普通参数/位置参数
    • 默认参数
    • 关键字参数
    • 收集参数

普通参数

- 参见上例
- 定义的时候直接定义变量名
- 调用的时候直接把变量或者值放入指定位置


        
            def 函数名(参数1, 参数2,....):
                函数体
                
            # 调用
            函数名(value1, value2,.......)
            
            # 调用的时候,具体值参考的是位置,按位置赋值

默认参数

- 形参带有默认值
- 调用的时候,如果没有对相应形参赋值,则使用默认值

            def  func_name(p1=v1, p2=v2..........):
                func_block
                
            #调用1
            func_name()
            
            # 调用2
            value1= 100
            value2=200
            func_name(value1,value2)
# 普通参数案例
def normal_para(one,two,three):
    print(one + two)
    return None
normal_para(1,2,3)
3
# 默认参数案例
def default_para(one,two,three=100):
    print(one + two)
    return None
default_para(1,3)
default_para(1,2,3)
4
3
#关键字参数
def keys_para(one,two,three):
    print(one + two)
    print(three)
    return None
keys_para(one = 1,two = 2,three = 100)
keys_para(three = 20,two  = 10,one = 1)#摆脱了位置的束缚
3
100
11
20