python中的结构

1.顺序结构--默认结构

2.分支结构,也称选择结构 if

import random
# 程序的三大结构  计算机编程语言一般都会有以下三大结构
#   1.顺序结构  自上往下执行,编写的代码一般都会默认自上往下执行,不用管
#   2.分支结构,也称选择结构   不同的情况执行不同的代码
#   3.循环结构

# Python分支结构
#   if:如果

# 单分支 if
sex = input("请输入您的性别(男/女):")
if sex == '男':
    print('大家好,我是ikun')
'''
C语言的写法:
if (sex == '男'){
    print('大家好,我是ikun')
}
python是极简的语言,简化代码,能简则简,但是:之后必须严格缩进,这也是python语言的特点
'''

print('-' * 100)

# 双分支:if -- else   语句肯定会进入其中之一
if sex == '男':
    print('大家好,我是ikun')
else:
    print('大家好,我是邓紫棋')

# 多分枝  if--elif--elif--else     语句肯定会进入其一
# 摇骰子 : 1-6
n = random.randint(1, 6)
if n == 1:
    print('喝一杯酒')
elif n == 2:
    print('唱个歌')
elif n == 3:
    print('跳舞')
elif n == 4:
    print('真心话')
elif n == 5:
    print('大冒险')
else:
    print('666')

# 成绩判断
#   A:>=90
#   B:60~90
#   c:<60
score = int(input('请输入你的成绩:'))
if score >= 90:
    print('A')
# elif score >= 60 and score < 90:  # 但是score < 90已经在上面的条件判断中了,可以不写  多余
# elif 60 <= score < 90:  # 跟数学中的写法一致,可以这样写,但不建议,只有python中可以这么写  其他语言是不支持的
elif score >= 60:
    print('B')
else:
    print('C')

# 练习:输入两个数。比较大小。然后得到最大的数
x = int(input("X:"))
y = int(input("y:"))
if x > y:
    print("最大数是", x)
else:
    print("最大数是", y)

# 使用一行语句来实现双分支
z = x if x > y else y
print("最大数是", z)

 3.分支作业

import random
# 导包:规范文档PEP 8 规定,写在代码最前面

''''''
'''
    if分支语句实现
'''

''' 基础题 '''
# 1. x 为 0-99 取一个随机数, y 为 0-199 取一个随机数,
#   如果 x>y 则输出 x的值,
#   如果 x 等于 y 则输出 x+y的值,
#   否则输出y的值
x = random.randint(0, 99)   # 随机取0~99中的某一个整数
y = random.randint(0, 199)  # 随机取0~199中的某一个整数
if x > y:
    print(x)
elif x == y:
    print(x + y)
else:
    print(y)

# 参考答案一样 

# 2.从控制台输入一个三位数,如果是水仙花数就打印“是水仙花数”,否则打印“不是水仙花数”
# 该数的每一位的立方和等于自身的值,比如:153 == 1**3 + 5**3 + 3**3
# 	例如:153 == 1**3 + 5**3 + 3**3
# 	n = 153:
# 	个位:n%10
# 	十位:(n//10)%10
# 	百位:n//100
n = int(input("请输入一个三位数:"))
if n == (n // 100) ** 3 + (n // 10 % 10) ** 3 + (n % 10) ** 3:
    print(n, '是水仙花数')
else:
    print(n, '不是水仙花数')

# 参考答案
n = int(input("请输入一个三位数:"))
a = n // 100
b = n // 10 % 10
c = n % 10
# if a ** 3 + b * b * b + c ** 3 == n:
if a ** 3 + b * b * b + pow(c, 3) == n:
    print(n, '是水仙花数')
else:
    print(n, '不是水仙花数')

# 3.从控制台输入一个五位数,如果是回文数就打印“是回文数”,否则打印“不是回文数”
#  回文数: 对称的5位数
# 	例如:11111   12321   12221  34543
a = int(input("请输入一个五位数:"))
if a // 10000 == a % 10 and a // 1000 % 10 == a // 10 % 10:
    print(a, '是回文数')
else:
    print(a, '不是回文数')

# 参考答案
n = int(input("请输入一个三位数:"))
a = a // 10000
b = a // 1000 % 10
c = a // 10 % 10
d = a % 10
if a == d and b == c:
    print(n, '是回文数')
else:
    print(n, '不是回文数')

# 4.从控制台输入两个数,输出较大的值
x = int(input('请输入一个数x:'))
y = int(input('请输入一个数y:'))
z = x if x > y else y
print('较大的值是', z)

# 参考答案一样

# 5,成绩判定,给一个成绩
# 	大于85  打印: 优秀
# 	大于等于75小于等于85 良好
# 	大于等于60小于75 及格
# 	小于60  不及格
score = int(input('请输入成绩:'))
if score > 85:
    print('优秀')
elif score >= 75:
    print('良好')
elif score >= 60:
    print('及格')
else:
    print('不及格')

# 参考答案
score = 80
if score > 85:
    print('优秀')
elif score >= 75:
    print('良好')
elif score >= 60:
    print('及格')
else:
    print('不及格')
    
''' 进阶题 '''
# 1,判断一个年份是闰年还是平年;
#  (1.能被4整除而不能被100整除.(如2024年就是闰年,1800年不是.)
#   2.能被400整除.(如2000年是闰年))
year = int(input('请输入一个年份:'))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print(f'{year}年是闰年')
else:
    print(f'{year}年不是闰年')

# 参考答案一样

# 2,输入一个月份,然后输出对应月份有多少天,将天数输出(不考虑闰年)
# 比如:
# 输入 6 输出为30
# 输入 2 输出为28
# 提示: 成员运算符 in
#    if month in [1,3,5,7,8,10,12]
#       month == 2
#       month in [4,6,9,11]
month = int(input('请输入一个月份:'))
if month in [1, 3, 5, 7, 8, 10, 12]:
    print('该月份有31天')
elif month == 2:
    print('该月份有28天')
else:
    print('该月份有30天')

# 参考答案:
month = int(input('请输入一个月份:'))
if month == 2:
    print('该月份有28天')
elif month in [4, 6, 9, 11]:
    print('该月份有30天')
else:
    print('该月份有31天')

# 3. 开发一款软件,根据公式(身高-108)*2=标准体重,可以有10斤左右的浮动。
#    来观察测试者体重是否合适, 输入真实身高(cm),真实体重(斤)
# height = 180
# weight = 150
#  标准体重 = (180 - 108) * 2
#  if 标准体重-10 <= weight <= 标准体重+10
height = int(input('请输入真实身高(cm):'))
weight = int(input('请输入真实体重(斤):'))
if (height - 108) * 2 - 10 <= weight <= (height - 108) * 2 + 10:
    print('体重合适')
else:
    print('体重不合适')

# 参考答案
height = int(input('请输入真实身高:'))
weight = int(input('请输入真实体重:'))
std_weight = (height - 108) * 2
if std_weight - 10 <= weight <= std_weight + 10:
    print('合适')
else:
    print('不合适')

# 参考答案二  绝对值abs
height = int(input('请输入真实身高:'))
weight = int(input('请输入真实体重:'))
std_weight = (height - 108) * 2
if abs(std_weight - weight) <= 10:
    print('合适')
else:
    print('不合适')

# 4.模拟玩骰子游戏,根据骰子点数决定什么惩罚【例如:1.跳舞,2.唱歌....】
n = random.randint(1, 6)  # 随机取1~6中的某一个整数
if n == 1:
    print('喝一杯酒')
elif n == 2:
    print('唱个歌')
elif n == 3:
    print('跳舞')
elif n == 4:
    print('真心话')
elif n == 5:
    print('大冒险')
else:
    print('666')

''' 挑战题 (选做) '''
# 1,输入一个时间,输出该时间下一秒: (*****)
# 	如:23:59:59,
# 	输入:hour, minute, sec
# 	输出 0: 0: 0
hour = int(input("时:"))
minute = int(input("分:"))
sec = int(input("秒:"))
if sec >= 59:
    sec = 0
    minute += 1

    if minute > 59:
        minute = 0
        hour += 1

        if hour > 23:
            hour = 0
else:
    sec += 1
print(f'{hour}:{min}:{sec}')

# 参考答案
hour = int(input("时:"))
minute = int(input("分:"))
sec = int(input("秒:"))
sec += 1
if sec >= 60:
    sec = 0
    minute += 1

    if minute >= 60:
        minute = 0
        hour += 1

        if hour >= 24:
            hour = 0
print(f'{hour}:{minute}:{sec}')

# 扩展  时间差  
# import datetime
# datetime timedelta

# 作业: 思考
# 8. 总共有456789秒, 求转换后是多少天,多少小时,多少分钟, 多少秒?
day = 456789 // (60*60*24)
hour = (456789 // (60*60)) % 24
minute = (456789 // 60) % 60
sec = 456789 % 60
print(day, hour, minute, sec)

# 参考答案
s = 456789

day = s // (3600 * 24)
hour = s // 3600 % 24
minute = s // 60 % 60
sec = s % 60
print(day, hour, minute, sec)

4. 循环结构-while

import random
# 顺序结构
# 分支结构
# 循环结构:可以帮助我们自动循环很多次去执行某个操作
"""
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')
print('hello 谢帝')

for i in range(1,14):
    print('hello 谢帝')

"""
# python中的循环
#   while 循环
#   for-in 循环
#   do while 循环   C语言有,python没有  其他语言的循环,但也可以用while循环替代,在实际应用中很少

# while 循环  当……时
#   语法
#   初始值
#   while 条件判断:
#       循环体
#       初始值变化(控制循环次数)

# if:如果条件成立则执行一次内容
if 1:
    print('if打印的内容')

# while:如果条件成立则循环不断的执行内容
# 死循环--无限循环 不会停止   有些语言禁止死循环,死循环会报错
'''
while 1:
    print('while打印的内容')
'''

# 需求:打印1-100之间的每一个数
'''
可以但不建议  学习循环后尽量使用循环
print(1)
print(2)
……
'''

i = 1
while i <= 100:         # 循环条件
    print('i:', i)
    i += 1              # 控制循环次数  如果不加这个条件就会是死循环

print('-' * 100)

# 断点调试:点击代码出现小红点  然后右击选中调试代码(小虫子),点击步长(F8)按键会一步一步执行,可以查看一些循环的中间过程。


# 需求:对 1+2+3+……+100求值
# 数学家  高斯:首尾相加  101 * 50 = 5050
#
s = 0       # 求和,初始值
i = 1
while i <= 100:
    s += i
    i += 1

print(s)

# 第1次循环:循环前 i=1,s=0;判断 i<= 100 是否成立;循环后:i=2,s=1
# 第2次循环:循环前 i=2,s=1;判断 i<= 100 是否成立;循环后:i=3,s=1+2
# 第3次循环:循环前 i=3,s=1+2;判断 i<= 100 是否成立;循环后:i=4,s=1+2+3
# ……
# 第99次循环:循环前 i=99,s=1+2+……+98;判断 i<= 100 是否成立;循环后:i=100,s=1+2+……+98+99
# 第100次循环:循环前 i=100,s=1+2+……+98+99;判断 i<= 100 是否成立;循环后:i=101,s=1+2+……+98+99+100
# 第101次循环:循环前 i=101,s=1+2+……+98+99+100;判断 i<= 100 是否成立;不成立,跳出/结束循环  执行循环之后的代码

''' 基础题 '''
# 1.计算从1到100以内所有奇数的和。
# 方式1
s = 0
i = 1
while i <= 100:
    if i % 2:                   # 其实是隐式判断 if i % 2 == 1:
        # print(i,end = ' ')
        s = s + i
    i += 1
print(s)

# 方式2
s = 0
i = 1
while i <= 100:
    s += i
    i += 2
print(s)

# 1.求1-100之间可以被7整除的数的个数
# 方式1
c = 0
i = 1
while i <= 100:
    if i % 7 == 0:
        c += 1
    i += 1
print(c)        # 14

# 方式2
c = 0
i = 7
while i <= 100:
    c += 1
    i += 7
print(c)

# 3.计算从1到100以内所有能被3或者17整除的数的和。
s = 0
i = 1
while i <= 100:
    if i % 3 == 0 or i % 17 == 0:
        s += i
    i += 1
print(s)        # 1887

# 4.计算1到100以内能被7或者3整除但不能同时被这两者整除的数的个数。
c = 0
i = 1
while i <= 100:
    if (i % 7 == 0 or i % 3 == 0) and i % 21 != 0:
        c += 1
    i += 1
print(c)        # 39

# 5.计算1到500以内能被7整除但不是偶数的数的个数。
c = 0
i = 1
while i <= 500:
    if i % 7 == 0 and i % 2 == 1:
        c += 1
    i += 1
print(c)        # 36

# 6.计算8的阶乘,要求用while循环
#   8的阶乘: 1*2*3*4*5*6*7*8
s = 1
i = 1
while i <= 8:
    s *= i
    i += 1
print(s)        # 40320
# 验证 print(1*2*3*4*5*6*7*8)

# 方式2
# import math
# print(math.factorial(8))  # math中求阶乘的函数 factorial

# 7.有一个寺庙,寺庙中有一个老和尚和一个小和尚,老和尚让小和尚去下山挑水,一次只能挑5L水
#   寺庙中的水缸是50L的,问小和尚要挑几次才可以装满水缸,要求用while循环计算
#   i+=5
c = 0
i = 0
while i < 50:
    c += 1
    i += 5
print(c)        # 10

''' 进阶题 '''
# 1.从键盘输入一个数n,判断是不是一个质数(质数是只能被1和它自身整除的数)
n = int(input('请输入n:'))
i = 2
c = 0
while i < n:
    if n % i == 0:
        c += 1
    i += 1
if c > 0:
    print(n, '不是质数')
else:
    print(n, '是质数')

# 2.求1000以内的水仙花数(100-999):水仙花数:一个三位数各个位上的立方之和,等于本身。
list1 = []
i = 100
while i <= 1000:
    if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i:
        list1.append(i)
    i += 1
print(list1)

# 答案二   求1000以内的水仙花数(100-999):水仙花数:一个三位数各个位上的立方之和,等于本身。
i = 100
while i <= 999:
    if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i:
        print(i, end=' ')
    i += 1

# 例如: 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
# 3.求2~100之内的所有素数。【素数:只能被1或本身整除的数】
i = 2
list1 = []
while i <= 100:
    c = 0
    j = 2
    while j <= i:
        if i % j == 0:
            c += 1
        j += 1
    if c == 1:
        list1.append(i)
    i += 1
print(list1)

# 答案二   求2~100之内的所有素数。【素数:只能被1或本身整除的数】
i = 2
while i <= 100:
    j = 2
    c = 0
    while j < i:
        if i % j == 0:
            c += 1
        j += 1
    if c == 0:
        print(i, end=' ')
    i += 1
# 4.优化猜数字游戏
#   计算机出一个1~100之间的随机数由人来猜 random.randint(1, 100)
#   计算机根据人猜的(输入)数字分别给出提示: 大一点 / 小一点 / 猜对了,
#   这个过程可以循环进行,当进行5次以上还猜不对的话,则打印:智商余额不足,并退出
#   如果猜对了,则也退出
n = random.randint(1, 100)
i = 1
while i <= 5:
    m = int(input('请输入m:'))
    if m == n:
        print('猜对了')
        i = 6
    elif m < n:
        print('大一点')
    else:
        print('小一点')
    i += 1
print('智商余额不足,自动退出')

5.循环结构-for

import random
# 其他语言中的for循环:
#       for (int i = 0; i < 100 ; i ++ ){
#
#       }

# range(start, stop, step):产生一个整数范围的序列/一个指定范围的整数序列
#   start: 开始值
#   stop:结束值
#   step:步长
#   左闭右开[start, stop)
range(5)     # 只写一个参数时,默认是结束值,开始值默认为0
range(0, 5)   # 两种写法是一样的
print(list(range(5)))    # [0, 1, 2, 3, 4]
print(list(range(0, 5)))  # [0, 1, 2, 3, 4]
print(list(range(3, 6)))  # [3, 4, 5]
print(list(range(2, 10, 2)))  # [2, 4, 6, 8]
print(list(range(10, 2)))   # [] 不写步长的时候没有意义
# print(list(range(7, 2, -1)))   # [7, 6, 5, 4, 3]
# print(list(range(10, 2, -1)))   # 但是步长为负数的时候 得到倒序的列表  [10, 9, 8, 7, 6, 5, 4, 3]
# print(list(range(7, 2, -2)))   # [7, 5, 3]

print(list(range(1, 101)))   # 打印 1-100
print(sum(list(range(1, 101))))  # 5050  求和

# for循环
#   1.遍历 range
#   2.循环遍历列表(元组。字符串。字典。集合)

# 需求:使用for循环打印 1-10
for i in range(1, 11):       # in 之后必须是可迭代对象,不能是单个数字/单个字符串等等
    print('i', i)

# 需求 :使用for循环打印 1-10 之间的每一个奇数
for i2 in range(1, 11, 2):
    print('i2', i2)

# 需求 :使用for循环打印 10-1 之间的每一个数
for i3 in range(10, 0, -1):
    print('i3', i3)

# 遍历列表  今后使用会非常频繁
# 列表
ages = [10, 20, 30]
# 索引,下标
print(ages[0])  # 10
print(ages[1])  # 20
print(ages[2])  # 30
# print(ages[3])  # 报错  值超出范围
print(ages[-1])  # 倒数第一个数  30

# len()  取列表的长度,即列表的个数
print(len(ages))  # 3

# 遍历列表
nums = [10, 20, 30, 40]

# 得到元素
for n in nums:
    print(n)   # 得到的是列表中的各个元素

# 得到索引
# for i in range(4):   # [0,1,2,3]
#     print(i, nums[i])

for i in range(len(nums)):   # [0,1,2,3]   使用时用长度的写法更贴合实际
    print(i, nums[i])

print('-' * 100)

# 枚举  同时得到 索引、元素
for i, n in enumerate(nums):
    print(i, n)

print('-' * 100)

# 练习:for 循环遍历 1-10 ,打印每个数的平方
for i in range(1, 11):
    print(i ** 2)   # print(i * i)


# 练习:打印以下图形
'''
*****
*****
*****
*****
*****
'''
for i in range(5):
    print('*****')

# 练习:打印以下图形
'''
*
**
***
****
*****
'''
for i in range(1, 6):
    print('*' * i)

for i in range(5):
    print('*' * (i + 1))

''' 基础题  使用for 循环 '''
# 1.求1-100之间可以被7整除的数的个数
c = 0
for i in range(1, 101):
    if i % 7 == 0:
        c += 1
print(c)

# 参考答案一样

# 2.计算从1到100以内所有奇数的和。
s = 0
for i in range(1, 101):
    if i % 2 != 0:
        s += i
print(s)

# 参考答案
# s = 0
# for i in range(1, 101, 2):
#         s += i
# print(s)

# 3.计算从1到100以内所有能被3或者17整除的数的和。
s = 0
for i in range(1, 101):
    if i % 3 == 0 or i % 17 == 0:
        s += i
print(s)

# 参考答案一样

# 4.计算1到100以内能被7或者3整除但不能同时被这两者整除的数的个数。
c = 0
for i in range(1, 101):
    if (i % 3 == 0 or i % 7 == 0) and i % 21 != 0:
        c += 1
print(c)

# 参考答案一样

# 5.计算1到500以内能被7整除但不是偶数的数的个数。
c = 0
for i in range(1, 501):
    if i % 7 == 0 and i % 2 != 0:
        c += 1
print(c)

# 参考答案一样
# 参考答案2
c = 0
for i in range(1, 501, 2):
    if i % 7 == 0:
        c += 1
print(c)

# 6.计算8的阶乘,要求用for循环
#   8的阶乘: 1*2*3*4*5*6*7*8
s = 1
for i in range(1, 9):
    s *= i
print(s)

# 参考答案一样

# 7.有一个寺庙,寺庙中有一个老和尚和一个小和尚,老和尚让小和尚去下山挑水,一次只能挑5L水
#   寺庙中的水缸是50L的,问小和尚要挑几次才可以装满水缸,要求用for循环计算
c = 0
for i in range(0, 50, 5):
    c += 1
print(c)

# 参考答案一样


''' 进阶题  for 循环 '''
# 1.从键盘输入一个数n,判断是不是一个质数(质数是只能被1和它自身整除的数)
n = int(input('请输入n:'))
c = 0
for i in range(2, n):
    if n % i == 0:
        c += 1
if c > 0:
    print(n, '不是质数')
else:
    print(n, '是质数')


# 2.求1000以内的水仙花数(100-999):水仙花数:一个三位数各个位上的立方之和,等于本身。
for i in range(100, 1000):
    if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i:
        print(i)

# 3.求2~100之内的所有素数。【素数:只能被1或本身整除的数】
for i in range(2, 101):
    c = 0
    for j in range(2, i):
        if i % j == 0:
            c += 1
    if c == 0:
        print(i)
# 4.优化猜数字游戏
#   计算机出一个1~100之间的随机数由人来猜 random.randint(1, 100)
#   计算机根据人猜的(输入)数字分别给出提示: 大一点 / 小一点 / 猜对了,
#   这个过程可以循环进行,当进行5次以上还猜不对的话,则打印:智商余额不足,并退出
#   如果猜对了,则也退出
n = random.randint(1, 100)
for i in range(5):
    m = int(input('请输入数字m:'))
    if n > m:
        print('大一点')
    elif n < m:
        print('小一点')
    else:
        print('猜对了')
        break
print('智商余额不足')

'''
注意:
    for循环:一般用于已知循环次数
    while循环:一般用于未知循环次数,或 死循环
        如果要写死循环不要用for循环,for 的右边要写东西,要么写range() 要么列表 要么元素等,这些都是有范围的
    假设一张纸的厚度是 0.01mm(毫米),对折多少次达到珠穆朗玛峰的高度 8848米,即求循环次数  
        这个题目不是等差的,是等比,不知道步长,未知循环次数,只能用while
'''
# 参考答案
# 未知循环次数
c = 0
i = 0.01
while i < 8848 * 1000:
    c += 1
    i *= 2
    # print('i', i)  # 呈指数级增长
print(c)

6.循环结构-for嵌套

# for 循环嵌套
"""
补充说明:
    python中,for里面嵌套for
        for i in :              
            for j in 
    最外层的for循环中的 i 表示行数
     内层的for循环中的 j 表示列数 
"""
# 练习 :打印以下图形  要求一次只能打印一个星
'''
*****
*****
*****
*****
*****
'''
for i in range(5):  # 行 i = 0,1,2,3,4

    # 打印一行: *****
    for j in range(5):     # 列 j = 0,1,2,3,4
        print('*', end='')      # end='' 控制列的星星之间的间隔,让它不换行

    print()     # 控制换行
'''
补充说明:
    python中,for里面嵌套for的时候要另起变量名(j),如果命名了一样的变量i,两者会相互影响,很容易出错
        for i in range(5):          # 已经使用了变量 i
            for j in range(5):      # 不能再使用变量 i  要重新命名,如 j
    但是在其他编程语言中可以使用,如C语言,因为它有作用域 {}
        for (int i = 0; i < 100; i++){
            for (int i = 0; i < 100; i++){
            }
        } in range(5):            
'''
# 练习 :打印以下图形  要求一次只能打印一个星

'''
*
**
***
****
*****
'''
for i in range(1, 6):  # 行 i = 1,2,3,4,5

    for j in range(i):  # 列 j = 1,2,3,4,5
        print('*', end='')

    print()

# 参考答案
for i in range(5):  # 行 i = 0,1,2,3,4

    for j in range(i+1):  # 列 j = 0,1,2,3,4
        print('*', end='')

    print()

# 练习 :打印 99 乘法表
'''
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
'''
for i in range(1, 10):
    
    for j in range(1, i+1):
        print(f'{j}*{i}={i*j}', end='\t')    # 制表符 \t,不完全等于四个空格,作用是对齐
        
    print()

# 循环嵌套不建议更多层循环   最多写三层,一般写两层,更多层不便维护,执行难度、时间复杂度等也呈指数增长
# \n : 换行符
# \t : 制表符 tab键

7.循环中的三个关键字  break continue pass

#   三个关键字 : break continue pass
#       这第三个关键字里面重点掌握 break


# break : 主动结束/跳出循环
#                   在循环体中,break 运行之后,它(break)的后续的代码不会再执行
for i in range(1, 10):
    print('i', i)
    if i == 3:
        break       # i == 3 之后的代码不会再执行,跳出整个for循环

print('ok')


# continue : 继续
#                   跳过当次循环,继续下一次循环
for i in range(1, 10):
    if i == 3:
        continue    # i == 3 的代码不执行,跳到for循环的下一个i,即 i == 4
    print('i', i)

print('ok')


# pass  空语句,占位语句,占位关键字,没有任何功能、语义  使用它只是防止代码报错
# 可能还不知道代码要写什么,可以写pass防止代码报错,一般填充/写在代码if 冒号 for循环 else 等等之后占个位置
# 不一定要写在循环里面 其他地方也可以使用
if 1:
    pass


# 练习
# 1.从键盘输入一个数n,判断是不是一个质数(质数是只能被1和它自身整除的数)
#           质数/质数:是只能被1和它自身整除的数
#           合数:除了能被1和它自身整除外,中间还有其他数也可以把它除尽
# n = int(input('请输入一个数:'))
# 方式1
'''
其他一些方法:
    for i in range(2, n // 2 + 1):     取当前数的一半看能不能除尽
    还可以用开平方 这里暂时不说明
'''

# 参考答案一  这个方法不包括质数2
# n = 2317
# for i in range(2, n):
#     if n % i == 0:
#         print(n, '不是素数')
#         break
# if i == n-1:
#     print(n, '是素数')

# 参考答案二  复杂
# b = True          # 随便写一个
# n = 2317
# for i in range(2, n):
#     if n % i == 0:
#         print(n, '不是素数')
#         b = False
# if b:
#     print(n, '是素数')

# 参考答案三  推荐
#       for - else ,while - else
#           1.for - else 要和 break 结合使用  不结合是没有意义的
#           2.执行了 break 就不会进入 else ,否则就会在 for 循环执行完成后,再执行 else
n = 79
for i in range(2, n):
    if n % i == 0:
        print(n, '不是素数')
        break                    # 如果不写 break 就会打印出能整除的数字的次数  比如 77 可以被 7 和 11 整除  会打印两次不是素数

else:
    print(n, '是素数')

相关推荐

  1. python结构

    2024-06-18 14:38:02       7 阅读
  2. Python主要数据结构使用

    2024-06-18 14:38:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 14:38:02       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 14:38:02       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 14:38:02       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 14:38:02       14 阅读

热门阅读

  1. 山东大学软件学院深度学习期末回忆版

    2024-06-18 14:38:02       9 阅读
  2. C# Socket通讯简单Demo

    2024-06-18 14:38:02       6 阅读
  3. 数据库分库分表

    2024-06-18 14:38:02       5 阅读
  4. MySQL触发器基本结构

    2024-06-18 14:38:02       5 阅读
  5. Cesium4Unreal - # 011A Http通信

    2024-06-18 14:38:02       5 阅读
  6. windows11 ssh 无法连接问题解决方法

    2024-06-18 14:38:02       6 阅读
  7. C语言、C++和C#的区别在什么地方?

    2024-06-18 14:38:02       6 阅读
  8. HTML 事件

    2024-06-18 14:38:02       6 阅读
  9. 云端数据保护的挑战与对策

    2024-06-18 14:38:02       6 阅读
  10. 【C/C++】工业级别的日志文件轮转策略原理

    2024-06-18 14:38:02       6 阅读
  11. VO 和 DO

    2024-06-18 14:38:02       7 阅读