9.22总结

9.22总结

听写回顾

# 1. 键盘录入一个字符,如果它是汉字则获取其对应的十进制数据,否则输出字符本身
ch = input('请输入一个字符:')
if '\u4e00' <= ch <= '\u9fa5':
    print(ord(ch))
else:
    print(ch)
作业回顾
# 录入一个字符,如果小写字母将其转为大写字母输出,
# 如果是大写字母将其转换为小写字母输出,否则输出字符本身
ch = input('字符:')
if 'a' <= ch <= 'z':
    # 十进制数据之间的关系,来进行转换的
    new_ch = chr(ord(ch) - 32)
elif 'A' <= ch <= 'Z':
    new_ch = chr(ord(ch) + 32)
else:
    new_ch = ch
print(new_ch)
语句嵌套

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

进制转换补充:
# 数据原始进制格式 2 8 10 16
src = int(input('请输入数据进制,比如2或者8或者16:'))
# 数据是谁
data = input('请输入数据:')
# 目标进制是谁
dest = int(input('请输入要转换的进制,如何2或者8或者10或者16:'))
"""
把数据转化为2进制,操作是bin(整数)
八进制 0ct(整数)
十六进制 hex(整数)

十六进制 int(整数)
    int(字符串,base=数据是几进制的)
"""
if src == 2 or src == 8 or src == 10 or src == 16:
# 想要完成这个操作,需要把数据转化成十进制
    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)
else:
    print('sorry 无法转换此进制的数据')
Python中的三元运算符

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

解读:判断if后面的表达式是否成立,如果成立的话执行表达式1,否则执行表达式2

理解:

res = 0 and 2  # 0 是False,一个不成立都不成立。所以输出左边的0
print(res)
res1 = 1 and 0
print(res1)    # 左边成立,取决于右边,输出右边的值,此处不成立,为0
res2 = 1 and 2
print(res2)   # 左边成立,结果取决于右边,输出右边的值,为2
res3 = 0 or 1
print(res3)  # 右边成立,输出右边
res4 = 1 or 0
print(res4)  # 左边成立,输出左边
res5 = 1 or 2
print(res5) # 左边成立,由于是or,一个成立即可,左边成立,输出左边即可
# 需求: 输入两个数据 获取其中的最大值
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)   # 三元运算
# 获取三个数中的最大值
num1 = int(input('请输入第一个数:'))
num2 = int(input('请输入第二个数:'))
num3 = int(input('请输入第三个数:'))
max_value = num1 if num1 > num2 else num2
print(max_value)

max_value = num1 if num1 > num2 and num1 > num3 else (num2 if num2 > num3 else num3)  # 简化版
隐式布尔转换

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

"""
文件名称: 03_隐式布尔转换.py
用户名: liuyanan
创建日期: 2023-9-22
flag标语:键盘敲烂 月薪过万!!!!
"""
# ch = input('请输入一个字符:')
# # ch 是什么类型的数据??? 字符串【容器型的  转换规则:非空容器即为True】
# if ch:  # 隐式布尔转换
#     print(ch)
# else:
#     print('没有输入内容')

# 判断一个数是否为偶数
# num = int(input('请输入一个整数:'))
# if num % 2:  # %2的结果为0或者1, 数值转换为布尔类型 非0即为True
#     print('奇数')
# else:
#     print('偶数')


# 把非布尔类型的数据参与逻辑运算符的运算
print(not 1)  # 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

# 写成这种 会执行else后面小螺号的内容
max_value = num1 if num1 > num2 and num1 > num3 else (num2 if num2 > num3 else num3)
# 但是 条件写成这种 不会执行
# max_value = num1 if num1 > num2 and num3 else (num2 if num2 > num3 else num3)


"""
执行机制:左边表达式成立,结果就是左边表达式的值;左边表达式不成立,解决取决于右边表达式的值
"""
# 非布尔类型的数据参与逻辑运算的时候 和 布尔类型的数据参与逻辑运算不一样的
# 因为布尔类型的值只有两个 True或者False  参与逻辑运算结果 也就只有两个 要么为True 要么为False
# 但是非布尔类型的数据 ,因为有一个隐式转换规则  结果又取的是表达式的  这个结果不一定是True或者False
res = 1 or 0
print(res)   #  1
2.6.3 循环结构语句

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

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

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

  1. 明确循环次数【重复做几次之后就不做了】
  2. 明确循环结束的条件

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

  1. for-in循环,应用与明确循环次数的

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

    语法:

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

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

1. 有数据,获取出来赋值给变量名 然后进行重复的操作,再次执行`in`
2. 没有数据 循环结束了
for ch in 'hello':
    print(ch)
print('循环结束')   # 挨个取字母
"""
遍历容器常规的做法:
1.对容器中的数据进行转化
2.对容器中的数据进行过滤
"""
s = 'abc'
s1 = 'ABC'
res = s + s1
print(res)    # abcABC

s += s1
print(s)  # abcABC
# 需求: 将其中的小写英文字母转化为大写 其他不变
# 最后的字符串的内容会发送变化 需要获取到最后的变化
# 需要定义一个新的变量 用来接受最终的变化
s = 'abcabc'
news = ''
# 遍历
for c in s:
    if 'a' <= c <= 'z':
        # 变成大写
        news += chr(ord(c) - 32)
    else:
        news = c
print(news)           # ABCABC
# 需求:将字符串中的数字符号提取出来
s2 = 'good123nice321'
news = ''
for i in s2:
    if '0' <= i <= '9':
        news += i
print(news)   # 123321
# s3 = 'Good Nice'将其中的大写转为小写 小写转为转为大写 其他不变
# s4 = 'Hello,大家好,欢迎来到Python2304'
	提取其中的英文字母与汉字

s3 = 'Good Nice'
num1 = ''
for ch in s3:
    if 'a' <= ch <= 'z':
        num1 += chr(ord(ch) - 32)
    elif 'A' <= ch <= 'Z':
        num1 += chr(ord(ch) + 32)
    else:
        num1 += ch
print(num1)              # gOOD nICE

s4 = 'Hello, 大家好,欢迎大家来到Python2304'
num2 = ''
for ch1 in s4:
    if 'a' <= ch1 <= 'z' or 'A' <= ch1 <= 'Z' or '\u4E00' <= ch1 <= '\u9fa5':
        num2 += ch1
print(num2)               # Hello大家好欢迎大家来到Python

# 其中字符串中字符的个数 怎么统计?
# 需要一个计数器 拿一个符号计数器+1
s4 = 'Hello, 大家好,欢迎大家来到Python2304'
count = 0
for c2 in s4:
    count += 1
print(count)

# 统计英文字母的个数
s4 = 'Hello, 大家好,欢迎大家来到Python2304'
letter_count = 0  # 英文字母的计数器
for c3 in s4:
    if 'a' <= c3 <= 'z' or 'A' <= c3 <= 'Z':
        letter_count += 1
print('英文字母的个数', letter_count)    # 11

# 统计英文字母的个数、数字的个数、汉字的个数、其他字符的个数
s4 = 'Hello, 大家好,欢迎大家来到Python2304'
num1 = 0
num2 = 0
num3 = 0
num4 = 0
for ch1 in s4:
    if 'a' <= ch1 <= 'z' or 'A' <= ch1 <= 'Z':
        num1 += 1
    elif '\u4E00' <= ch1 <= '\u9fa5':
        num2 += 1
    elif '0' <= ch1 <= '9':
        num3 += 1
    else:
        num4 += 1
print(f'英文字母个数为:{num1}, 汉字个数为:{num2},数字个数为:{num3},其他字符个数为{num4}')
  1. while循环,应用于明确循环结束条件的

    语法:

while 条件判断:
	重复操作的代码块
  1. 解读:判断条件是否成立
    1. 条件成立,执行重复的操作,再次判断条件是否成立
    2. 条件不成立,循环结束
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值