python的基本语法知识

第四天的学习内容喵,请大大们检查~

2.6流程控制语句

2.6.1顺序结构语句

代码从上向下逐行运行的

2.6.2分支结构语句

分为三种格式的,这三种格式分别是

  1. 单分支 语法:

    if 条件表达式:
        满足条件执行的代码块

    语境:如果达到了某个条件,就去做某件事

    :缩进/冒号缩进:代表python中代码块的包含体,满足要求执行的代码要统一缩进体现出来的包含关系

    eg:
    # 再进行取余之前 需要先对数据进行判断  看一下是否要减去5
    num = int(input('请输入一个整数:'))
    if num % 2 == 0:
         num -= 5  # num = num - 5
    result = num % 3
    print(result)
  2. 双分支 语法

    if 条件表达式:
        满足条件执行的代码块
    else:
        不满足条件执行的代码块

    语境:如果满足某个条件做事情A,否则做事情B

    # 需求: 输入一个整数: 如果这个数是奇数 对数据进行 *7 - 9的运算 否则对数据进行 *5-11的运算
    num1 = int(input('请输入一个整数:'))
    if num1 % 2 != 0:
        result = num1 * 7 - 9
    else:
        result = num1 * 5 - 11
    print(result)
  3. 多分支 语法:

    if 条件表达式1:
        满足条件1执行的代码块
    elif 条件表达式2:
        不满足条件1 但是满足条件2执行的代码块
    elif 条件表达式3:
        满足条件3 但是不满足条件1和2执行的代码块
    ...
    else:
        以上条件都不满足执行的代码块

    语境:如果满足条件1,就做事情A,否则如果满足条件2,做事情B....

    # 需求:输入一个年龄 判断这个人是青年【年龄在30岁以下】  中年【30-60】  老年【60以上】
    age = int(input('请输入年龄:'))
    if age < 30:
        print('青年')
    elif age <= 60:
        print('中年')
    else:
        print('老年')
语句嵌套

在满足某种要求的基础上,还需要再进行逻辑判断才可以确定结果

# 数据的原始进制格式,数据是什么,目标进制是什么
src = int(input('请输入进制,2、8、10、16'))
data = input('请输入数据:')
dest = int(input('请输入要转换的进制,比如2、8、10、16'))
​
# 二进制 bin(整数)
# 八进制 oct(整数)
# 十六进制 hex(整数)
# 十进制 int(整数)
#       int(字符串,base= 几进制的)
# 需要先把数据转化成十进制
decade_num = int(data,base=src)
# 判断目的进制是什么进制转化
if dest==2:
    result = bin(decade_num)
elif dest==8:
    result = oct(decade_num)
elif dest==16:
    result = hex(decade_num)
elif dest==10:
    result = decade_num
else:
    result = '无此进制转换机制'
print(result)
# 用语句嵌套,进行进制转换,且如果原始数据是非2、8、10、16,直接提示没有该进制的转换
​
# 数据的原始进制格式,数据是什么,目标进制是什么
src = int(input('请输入进制,2、8、10、16'))
#如果原始数据进制是非2/8/10/16的  提示没有该进制的转换
if src == 2 or src == 8 or src == 10 or src == 16:
    data = input('请输入数据:')
    dest = int(input('请输入要转换的进制,比如2、8、10、16'))
​
# 二进制 bin(整数)
# 八进制 oct(整数)
# 十六进制 hex(整数)
# 十进制 int(整数)/int(字符串,base= 几进制)
# 需要先把数据转化成十进制
​
    decade_num = int(data,base=src)
    
# 判断目的进制是什么进制转化
    
    if dest==2:
        result = bin(decade_num)
    elif dest==8:
        result = oct(decade_num)
    elif dest==16:
        result = hex(decade_num)
    elif dest==10:
        result = decade_num
    print('转换结果为',result)
else:
    print('无此进制转换机制')

tips:选中 tab:整体缩进;shift+tab:整体取消缩进

python中的三元运算符

格式:表达式1 if 条件表达式 else 表达式2

# 需求:输入两个数据 获取其中的最大值
num1 = int(input('请输入第一个数:'))
num2 = int(input('请输入第二个数:'))
if num1 > num2:
    max_value = num1
else:
    max_value = num2
print(max_value)
​
# 用三元运算简化
max_value = num1 if num1 > num2 else num2
print(max_value)
practice
# 获取三个数中的最大值
分两步
num3 = int(input('请输入第三个数:'))
max_value = num1 if num1 > num2 else num2
max_value = max_value if max_value > num3 else num3
print(max_value)
一步
num1 = int(input('a:'))
num2 = int(input('b:'))
num3 = int(input('c:'))
m_v = num1 if num1 > num2 and num1 > num3 else num2 if num2 > num3 else num3
print(m_v)
隐式布尔转换

隐式布尔转换:把非布尔类型的数据当做布尔类型判定逻辑(数据本身没有变化),这种行为称为隐式布尔转换

ch = input('请输入一个字符:')     # ch:'',空容器,False
# ch 是什么类型的数据??? 字符串【容器型的  转换规则:非空容器即为True】
if ch:  # 隐式布尔转换
    print(ch)
else:
    print('没有输入内容')
# 判断一个数是否为偶数
num = int(input('shuru'))
if num % 2:  # %2为1或0,数值转换为布尔类型 非0即为true
    print('奇数')
else:
    print('偶数')
#把非布尔类型的数据参与逻辑运算符的运算
print(not 1)  # (not 1)= 0,False
"""
and 执行过程
    True and True = True
    True and False = False
    False and False = False
    False and True = False
    执行机制是左边表达式成立,结果取决于右边表达式;左边表达式不成立,结果就是左边表达式的值
"""
# max_value = num1 if num1 > num2 and num1 > num3 else (num2 if num2 > num3 else num3)
# num1 > num2 and num3  能否写成这样?????  不能!!!!!!
# 这样写 and 右边的表达式不是布尔值 而是一个非布尔类型的数据
num1 = 17
num2 = 15
num3 = 27
​
res = num1 > num2 and num1 > num3
print(res)  # False
"""
and 左边的表达式的结果为真,输出右边的结果,(谁决定了整个式子就输出谁)
所以最终的结果 等于 右边表达式的值
"""
res1 = num1 > num2 and num3
"""
and 左边的表达式的结果为真
所以最终的结果 等于 右边表达式的值
"""
print(res1)  # 27
​
max_value = num1 if num1 > num2 and num1 > num3 else (num2 if num2 > num3 else num3)
​
"""
执行机制:左边表达式成立,结果就是左边表达式的值;左边表达式不成立,解决取决于右边表达式的值
"""
# 非布尔类型的数据参与逻辑运算的时候 和 布尔类型的数据参与逻辑运算不一样的
# 布尔类型的值只有两个 True或者False  结果 只有两个 True False
# 但是非布尔类型的数据 ,因为隐式转换规则  结果又取的是表达式的  这个结果不一定是True或者False
res = 1 or 0
print(res)  ===>  1,因为结果是true,决定这个结果的是左边的1,所以输出1。
2.6.3循环结构语句

循环:周而复始的做某件事

编程语言中对一直重复做某件事情没有终止的情况下称为死循环,但编程中进制

在编程语言中见到的循环通常是两种情况:

  1. 明确循环次数【做几次后不做了】

  2. 明确循环条件,到某一条件停止循环

Python为这两个场景的循环提供了对应的循环机制,分别是

  1. for-in循环,应用于明确循环次数的 本质是在遍历容器型数据,【遍历:将容器中的数据从左向右逐个取出】,容器中有几个数据,for-in包含的操作就被被执行几次

    语法:
    for 变量名 in 容器型数据:
        重复操作的代码块

    解读:重点在于in[进入],进入到容器中获取数据

    1. 有数据,获取出来赋值给变量名,然后进行重复的操作,再次执行in
    2. 没有数据循环结束
    eg:
    # for-in是来遍历容器型数据
    # 现在接触的只有字符串,其中的元素是字符[长度为1的字符串称为字符]
    for ch in 'hello':
        print(ch)
    #
    h
    e
    l
    l
    o
    """
    遍历容器常规的做法:
    1. 对容器中的数据进行转换
    2. 对容器中的数据进行过滤
    """
    # 字符串也能用应用算术运算符的加号, 应用在字符串中完成的是拼接
    s = 'abc'
    s1 = 'ABC'
    res = s + s1
    print(res)  # abcABC
    ​
    s += s1
    print(s)  # abcABC
practice:
   # 将s中的小写英文字母转化成大写,其他不变
news = ''   # 需要定义一个新的变量 用来接受最终的变化
for c in s:
    if 'a' <= c <= 'z':   # 对c的值进行判断 是否为小写字母
        news += chr(ord(c) - 32)   # 变成大写
# 用+=的原因:因为是一个一个拿出来的,所以需要一个一个运算
    else:
        news += c
# 后面那个+=:因为等于是赋值,所以需要用+=进行拼接
print(news)  # ABCABC
# 将字符串中的数字符号提取出来
s2 = 'good123nice321'
new_s = ''  # 定义一个新的字符串 设置空字符串
# 遍历 逐个获取
for c1 in s2:  # c1是字符串类型 是一个字符 带着''
    if '0' <= c1 <= '9': # 判断是否是数字符号
# 比较的时候需要加上引号,因为c1是字符串类型的,不带引号的就是一个可以算术运算的数字
        new_s += c1
print(new_s)
# s4 = 'Hello, 大家好,欢迎大家来到Python2304' 提取其中的英文字母与汉字
s4 = 'Hello,大家好,欢迎大家来到Python2304'
new1_s = ''
for y in s4:
    if 'a' <= y <= 'z' or 'A' <= y <= 'Z' or '\u4e00' <= y <= '\u9fa5':
        new1_s += y
print(new1_s)      # Hello大家好欢迎大家来到Python
统计字符串中字符的个数:   # 需要一个计数器  拿一个符号 计数器+1
s4 = 'Hello,大家好,欢迎大家来到Python2304'
count = 0   # 遍历 逐个获取
for c2 in s4:
    count += 1
print(count)
​
# 统计英文字母的个数
letter_count = 0  # 英文字母的计数器
for c3 in s4:
    if 'a' <= c3 <= 'z' or 'A' <= c3 <= 'Z':
        letter_count += 1
print('英文字母的个数', letter_count)
​
#  统计英文字母的个数、数字的个数、汉字的个数、其他字符的个数
count = 0
count2 = 0
count3 = 0
count4 = 0
for n in s4:
    if 'A' <= n <= 'Z' or 'a' <= n <='z':
        count += 1
    elif '0' <= n <= '9':
        count2 += 1
    elif '\u4e00' <= n <= '\u9fa5':
        count3 += 1
    else:
        count4 += 1
print(count,count2,count3,count4)
  1. while循环,应用于明确循环结束挑几件的

    语法:
    while 条件判断:
        重复操作的代码块

    解读:判断条件是否成立

    1. 条件成立,执行重复的操作,再次判断条件是否成立。

    2. 条件不成立,循环结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值