0831笔记

19_回顾

运算符
算术运算符

​ +

​ -

​ *

​ /

​ //

​ %

​ **

​ 一元运算符 正负号

​ 优先级别 ** > 负号 > * / // % > + -

复合赋值运算符

​ 结合算术运算的赋值运算符 先对变量进行对应的算术运算 再进行赋值

​ +=

​ -=

​ *=

​ /=

​ //=

​ %=

​ **=

比较运算符

​ >

​ >=

​ <

​ <=

​ ==

​ 一个等号是赋值 把数据赋值给变量 a=10

​ 两个等号是判断两个数据是否相等

​ a == 10 [取a的值 与10进行对比]

​ !=

逻辑运算符

​ and 逻辑与 并且关系 同时成立
​ or 逻辑或 或者的关系 成立一个即可
​ not 逻辑非 对逻辑结果取反

​ not > and > or 优先级别

成员运算符

​ in 应用到容器型数据 判断数据是否在指定的容器中
​ 现在的接触到的容器有两个
1. 字符串
2. range生成的等差数列

优先级别
算术运算符 > 比较运算符 / 成员运算符 > 逻辑运算符 > 赋值运算符

流程控制语句

​ 分支结构
1. 单分支
if 条件:
代码块
2. 双分支
if 条件:
代码块1
else:
代码块2
3. 多分支
if 条件1:
代码块1
elif 条件2: # elif === else if
代码块2

elif 条件N:
代码块N
else:
以上条件都不满足执行的代码块

循环结构

有两个:

  1. for-in循环
    本质是在遍历[逐个获取容器中的数据]容器, 形成了循环机制
    这种循环适用于确定循环次数的
    容器中有几个数据,循环体就被执行几次

    格式:
    for 变量名 in 容器型数据:
    循环体

    range等差数列
    range(stop)
    从0开始的 步长是1 到stop[不包含]结束
    range(10) ===== 0 1 2 3 4 5 6 7 8 9
    range(start, stop)
    从start开始的 步长是1 到stop[不包含]结束
    range(10, 20) ==== 10 11 12 13 14 15 16 17 18 19
    range(start, stop, step)
    step 步长
    正数 递增的数列 start < stop
    负数 递减的数列 start > stop
    range(10, -1, -2) ==== 10 8 6 4 2 0
    range(5, 20, 5) ==== 5 10 15

20_作业

  1. 录入一个整数,判断其是否是3的倍数并且个位数为5
  2. 假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX时XX分XX秒’的⽅式表示出来
  3. 写程序判断输入的整数(num)是否是水仙花数 [水仙花数是一个三位数, 并且每位上的立方之和结果等于数值本身 比如 153 = 13+53+3**3]
  4. 使用range生成1到100的整数,使用for循环将其中的3的倍数取出
  5. 使用range生成10开始到1000结束步长为100的等差数列,并将其中的7的倍数取出
# 1. 录入一个整数,判断其是否是3的倍数并且个位数为5
num = int(input('录入一个整数:'))
res = num % 3 == 0 and num % 10 == 5
print(res)
# 2.假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX时XX分XX秒’的⽅式表示出来
"""
1小时 = 60分钟 = 3600秒
1分钟 = 60秒
"""
time = 15678
# 小时
hour = time // 3600
# 秒 能剩下的秒代表是不能转换成分钟的
second = time % 60
# 分钟  分钟是不能转化为小时的  对3600来说不能转化为小时的 余下的 再看一下有多少个60 就是有多少个分钟
minute = time % 3600 // 60
print(hour,'时', minute, '分', second, '秒')
# 3. 写程序判断输入的整数(num)是否是水仙花数 [水仙花数是一个三位数, 并且每位上的立方之和结果等于数值本身  比如 153 = 1**3+5**3+3**3]
num = int(input('请输入一个整数:'))
if 100 <= num <= 999:
    unit = num % 10
    decade = num // 10 % 10
    hundred = num // 100
    if hundred ** 3 + decade ** 3 + unit ** 3 == num:
        print(num, '是水仙花数')
    else:
        print(num, '不是水仙花数')
else:
    print(num, '不是水仙花数')
# 4. 使用range生成1到100的整数,使用for循环将其中的3的倍数取出
for num in range(1, 101):
    if num % 3 == 0:
        print(num)

for ele in range(3, 101, 3):
    print(ele)
# 5. 使用range生成10开始到1000结束步长为100的等差数列,并将其中的7的倍数取出
for i in range(10, 1001, 100):
    if i % 7 == 0:
        print(i)

21_for结合range的小案例

# 1. 求1+2+3+...+99+100
"""
产生一个容器 容器放着1-100的数据
遍历容器取值 ,取出来一个累加起来
注意: 和随着取值 会发生变化的  【定义一个变量 用来接受累加和的值】
    变量名使用等号进行赋值时  会把原本的数据给覆盖掉
"""
total = 0  # 放在循环的外面  避免每次循环重置
for i in range(1, 101):
    total += i  # total = total + i
    """
    第一次 in 的时候 i = 1
        total += i  ===> total  = total + i = 1
    第二次 in 的时候 i = 2
        total += i  ===> total  = total + i = 1 + 2 = 3
    第三次 in 的时候 i = 3
        total += i  ===> total  = total + i = 3 + 3 = 6
    """
print(total)
# 求 1-2+3-4+5-6+...-98+99-100
"""
观察:
    发现奇数是相加的 偶数是相减的
    获取数据的是加还是减  需要判断拿到的数据是奇数还是偶数
"""
total1 = 0  # 定义一个变量 记录累加和
for j in range(1, 101):
    if j % 2 == 1:
        total1 += j
    else:
        total1 -= j
# 当循环结束的时候 把所有的数据都参与运算了
# 写的代码与for对齐 代表已经出了循环  如果还是缩进的操作 代表还在循环之中
print('所有数据计算完成之后的结果是', total1)
# 求 1-2+3-4+5-6+...-98+99-100
total2 = 0  # 定义一个变量 记录累加和
for k in range(1, 101):
    # 不想使用分支判断 可以利用对-1求幂数  (-1)的奇数次幂结果是-1  (-1)的偶数次幂结果是1
    value = (-1) ** (k - 1) * k
    total2 += value
print(total2)
# 求1**2 + 2**2 + 3**2 + ... + 10**2 结果
total3 = 0
for m in range(1, 11):
    total3 += m ** 2
print(total3)
# 求1-100中能被3整除且个位数为5的数据的个数
# 需要一个变量作为计数器
count = 0
# 遍历
for n in range(1, 101):
    if n % 3 == 0 and n % 10 == 5:
        count += 1
print(count)

22_关键字break和continue

import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 
'await', 'break', 'class', 'continue', 'def', 'del', 
'elif', 'else', 'except', 'finally', 'for', 'from', 'global',
 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 
 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
break和continue

​ 都是应用在循环结构语句中,只能对循环起作用
​ break的作用是中断它所在的循环 【退出循环】
​ continue的作用[循环一次一次执行的]是, 结束当前次[循环体中后面的代码不再执行],
​ 跳到循环判断的位置,再决定是否开启下一次 [判断成立的时候 开启下一次]

# 演示continue的作用
# 打印1-10中的偶数
for i in range(1, 11):
    # 判断这个数据是否是偶数 是的话 执行打印操作
    if i % 2 == 0:
        print(i)

# 换一种思路: 判断是否为奇数 如果是奇数 跳过这一次循环 继续拿下一个数
for j in range(1, 11):
    if j % 2 == 1:
        continue
    print(j)

# 利用continue写 数7游戏
# 1-100中 遇到7 或者 7的倍数 跳过  否则是输出
"""
1. 使用range 生成1-100的数列 
2. 遍历逐个获取数据
3. 判断 获取的数据 是否是7的倍数 或者 带7
        带有7 有两种情况
            个位   %10 == 7
            十位  //10%10 == 7
        7的倍数
            %7 == 0
"""
for m in range(1, 101):
    if m % 10 == 7 or m // 10 % 10 == 7 or m % 7 == 0:
        continue
    print(m)

break 是结束所在的循环
一般循环结束是 循环条件不成立或者容器中没有数据可拿时 结束循环

for n in range(1, 11):
    print(n)
    if n == 5:
        break
# 需求:
# 获取 1-100中 3的倍数且个位数为5  当获取到第二个的时候 结束获取
"""
思路:
    获取的时候还需要计数  当计数器为2的时候 结束循环
"""
count = 0  # 计数器
for k in range(1, 101):
    if k % 3 == 0 and k % 10 == 5:
        count += 1  # 计算器+1
        print(k)

    # 判断计算器是否为2 结束
    if count == 2:
        break

23_while循环结构

语法:

​ while 条件判断:

​ 循环体代码块

解读:

​ 只要条件成立,程序就一直在此循环,直到循环条件不成立

# 输出1-10之间的数据
# for循环的思想: 需要一个容器,容器中存放在1-10
for i in range(1, 11):  #  容器的起始值是1  步长是1  结束位置是11[不包含]
    print(i)
while循环 思想:
  1. 重复做的操作是什么 ==== 打印数据 每次打印的都是1个
  2. 做这件事情的条件 ===== 只要打印的数据没有到10 就得一直打印

根据这两件事情,需要哪些数据支持

打印数据 每打印1次 数据要在原来的基础上+1

也就是说要打印的数据是变化的 就得设置标记名给其进行标记 【定义一个变量 记录打印的数据值】

num = 1
# 循环的操作
while num <= 10:
    print(num)
    # 数据还在原来的基础上+1
    num += 1
print('循环结束时 num的值', num)

# 1-10中的偶数  使用while打印1-10中的偶数
# 定义一个数据的起始值
m = 1
# 循环 数据进行递增
while m <= 10:
    if m % 2 == 0:
        print(m)
    m += 1
# 1. 使用while循环 完成 1+2+3+...+100
# 使用for来完成的时候
total = 0  # 记录和的
for i in range(1, 101):
    total += i
print(total)


m = 1
total1 = 0
while m < 101:
    total1 += m
    m += 1
print(total1)
# 1.求 1-2+3-4+5-6+...-98+99-100
# 2.求1-100中能被3整除且个位数为5的数据的个数

range(1, 101)
k = 1
total2 = 0  # 接受和
while k < 101:
    if k % 2 == 0:
        total2 -= k
    else:
        total2 += k
    k += 1
print(total2)

range(1, 101)
p = 1
count = 0  # 计数器
while p < 101:
    # 判断这个数据是否满足要求
    if p % 3 == 0 and p % 10 == 5:
        count += 1
    p += 1
print(count)
循环结束的场景:
1. 明确循环次数  --- for-in循环  遍历容器,容器中有几个数据 循环就执行几次
    2. 明确结束状态的 --- while循环
        while 循环条件:
            满足条件就执行

经过上面代码的演示 while也可以适用于明确循环次数的,只不过使用while书写起来麻烦了一些, 所以建议使用for-in循环

# 案例:  有1023个桃子, 猴子每天吃桃子剩余个数的一半多1个,问多少天能吃完
# 来操作的时候 循环次数不明确  就使用while循环
#1. 重复做的事情是什么      桃子个数/2 + 1
#2. 结束做这件事情的状态[只要没有达到这个状态就不会结束]  桃子个数为0 就不用吃 【只要桃子个数不为0 就得一直吃】
#需要准备的数据:
#1. 需要一个变量名 接受桃子的个数  起始值是1023
#2. 计数器 记录吃的天数
peach_count = 1023  # 桃子的个数
day = 0  # 计数器【天数】
# 开启循环
while peach_count > 0:
    # 吃完 记录的剩余的桃子的个数
    peach_count = peach_count - (peach_count//2 + 1)
    # 计数器+1
    day += 1
# 循环结束的时候 桃子被吃完
print('1023个桃子猴子需要', day, '天吃完')
"""
练习:
    1. 录入一个大于1的整数  
        如果这个数值是偶数  将数据整除2后-1
        如果这个数是奇数  将这个数据-1 再整除2
        重复操作  问多少次之后才能将数据设置为0
    2. 一张纸的厚度是0.8mm,假设纸足够长,问对折多少次可以将纸的高度达到1000米
"""
num = int(input('请输入一个大于1整数:'))
num1 = num  #  记录原始的数据
count1 = 0
while num > 0:
    # 判断奇偶性
    if num % 2 == 0:
        num = num // 2 - 1
    else:
        num = (num - 1) // 2
    # 计数器+1
    count1 += 1
print(num1, '经过运算', count1, '次之后置为0')
# 一张纸的厚度是0.8mm,假设纸足够长,问对折多少次可以将纸的高度达到1000米
# 1m = 1000mm
"""
重复的事情   对折  厚度*2
做这件事情的目的  达到1000000mm  
"""
"""
准备数据
1. 记录纸的高度  起始高度是0.8mm
2. 计数器 记录次数
"""
paper_height = 0.8
count2 = 0
while paper_height < 1000 * 1000:
    # 重复的操作
    paper_height *= 2
    # 计数器+1
    count2 += 1
print('0.8mm的纸经过', count2, '次对折后达到千米')
"""
简单的思路  
初学while循环的  
可以while True的思想 【死循环】  
    分析出来结束点 判断是否达到结束点 到了的话 结束循环break
"""
paper_height1 = 0.8
count3 = 0
while True:
    # 对折
    paper_height1 *= 2
    # 计数
    count3 += 1
    # 判断 纸的高度达到千米
    if paper_height1 >= 1000 * 1000:
        break
"""
数字炸弹:
        规则: 有一个出题人 随便在1-100之间设定一个数据,然后其他人猜
            猜小了、猜大了  出题人提示新的范围 
            猜中了 就一顿暴揍
           
        69
        
        你: 85    出题人 1-85
        他: 70    出题人 1-70
        她: 55     出题人 55-70
        我:  69    挨揍了  
"""
# 程序中生成随机数
# Python提供了一个工具包  random  就是来提供随机操作
import random
print(random.randint(1, 101))  # 在给定的a,b之间随机选择一个整数
"""
完成这个游戏 是需要循环的
循环次数是不明确的,使用while循环
循环结束状态: 猜中了
"""
"""
数据准备
1. 准备一个1-100中的随机数
2. 猜数的范围的起始值和结束值
"""
random_num = random.randint(1, 100)  # 唯一一个包含结束位置的
# 猜数的范围
start = 1
stop = 100
# 开始猜
while True:
    # 猜的动作是重复的  所以放在循环中
    # 字符串数据可以使用+将数据拼接在一起 【只能是字符串与字符串拼接】
    # 把数据转化成字符串的操作 str(数据)  int() float()
    guess = int(input('请输入' + str(start) + '-' + str(stop) + '之间的数据,进行竞猜:'))
    # 将输入的数据与随机的数据进行对比
    if guess > random_num:
        # pass
        print('猜大了')
        stop = guess
    elif guess < random_num:
        print('猜小了')
        start = guess
    else:
        print('猜中了  暴揍中.....')
        break
print('游戏结束')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值