Python基础实战100例

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

#第1期-九九乘法表

#1 解题思路

  • 因数从1到9逐个循环,可以使用循环结构(for循环、while循环)
  • 分行与列考虑,共9行9列,嵌套循环
  • 遍历1-9 的数字序列,可以使用range()函数
  • 利用format将字符串格式化,让数据按照几成几等于几的固定格式显示

#2 解题方法

for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(j, i, i*j), end=' ')
    print()

1
2
3
4

第1行: 用for语句遍历1至9的整数,为变量 i 赋值
第2行: 在第一个for语句的基础上嵌套一个for语句,遍历 1 至 i 的整数,为 j 赋值
第3行: 用print函数打印结果,format方法格式化字符串;\t代表的是tab键,也就是4个空格;end = ‘’表示在每一个计算结束时加一个空格
第4行: 执行完一次循环后,用print函数换行输出,继续下一次循环,直至输出九行九列的乘法表

代码运行结果为:
image.png

这里用到了range函数和format函数,简单讲解下这两个函数:
range()函数
range() 函数可创建一个整数列表,一般用在 for 循环中遍历数字序列
语法:
range(start, stop [step])
range(stop)
参数说明:
start: 计数从 start 开始。默认是从0开始。
stop: 计数到 stop 结束,但不包括stop。

例如:range(5)等价于range(0,5),表示0,1,2,3,4
range(2)等价于range(0,2)表示为0,1
range(1,10)输出就为1,2,3,4,5,6,7,8,9
range(1,4)输出的值为1,2,3

step:步长,默认为1。
例如:range(1,10)等价于 range(1, 10, 1),输出就为1,2,3,4,5,6,7,8,9
range(1,10,2),step为2,输出就为1, 3, 5,7,9

format函数:
format函数是格式化字符串的一种方法
语法:
‘{}’.format()
大括号{}来标明被替换的字符
基本用法:

  • 按照{}的顺序依次匹配括号中的值
s = "{} is a {}".format('Tom', 'Boy')
print(s)  # Tom is a Boy

1
2

  • 通过索引的方式去匹配参数
s = "{0} is a {1}".format('Tom', 'Boy')
print(s)  # Tom is a Boy

1
2

  • 通过参数名来匹配参数
s = "{name} is a {sex}".format(name='Tom', sex='Boy')
print(s)  # Tom is a Boy

第2期-求100以内奇数和

#1 解题思路

对100以内的奇数求和,有四种常见的解题方法:

  • 用range函数遍历100以内的奇数,然后用sum函数求和
  • for 循环嵌套if语句,将100以内的奇数相加求和
  • while循环将100以内的奇数相加,并打印求和
  • 用递归方法求和

#2 解题方法

#方法一: sum函数

print(sum(range(1, 100, 2)))

1

首先用range函数创建了一个整数列表,range(1, 100, 2)表示取值为1-100(不包括100)的整数,步长为2,输出的值为1,3,5……99

更多关于range函数的用法查看第1期-九九乘法表(opens new window)

然后用sum函数对100以内的奇数求和
最后用print函数将求和结果打印出来

这行代码充分体现了Python 语言的简洁性!!!

#方法二: for循环

count = 0

for number in range(100):
    if number % 2 == 0:
        continue
    count += number
    
print(count)

1
2
3
4
5
6
7
8

第1行: 设置一个变量count, 初始赋值为0
第3行: 用for循环遍历100以内所有的整数
第4-6行: 用if语句判断100以内的数是否为奇数,是奇数就相加(if i % 2 == 0,continue的含义是当数字为偶数时退出本次循环)
第8行: 用print函数打印其和

这是我们在Python基础交互课第六章循环部分讲过的知识点,忘记了的小伙伴可以再学习下课程哦~

#方法三: while循环

count = 0
number = 1

while number < 100:
    count += number
    number += 2
    
print(count)

1
2
3
4
5
6
7
8

第1-2行: 设置一个变量count ,初始赋值为0,变量number初始赋值为1
第4-6行: 设定while循环的运行条件(number < 100)及执行语句(count += number;number += 2)
第8行: 用print函数打印其和

#方法四: 递归求和

def sum(x):
    if x > 99:
        return 0
    else:
        count = sum(x + 2)
        return x + count
print(sum(1))

1
2
3
4
5
6
7

先看下什么是递归:
递归(Recursion)
递归是一种解决问题的思路,其精髓在于将问题分解为规模更小的相同问题,直到问题规模小到可以用非常简单直接的方式来解决,其算法方面的明显特征就是:在算法流程中调用自身。

也可以说在函数内部调用自己的函数被称之为递归

递归算法三定律:

  • 必须要有结束条件(最小规模问题的直接解决)
  • 必须能向结束条件演进(减小问题规模)
  • 必须调用自身(解决减小了规模的相同问题)

在这段代码中,
第1行: 用def定义 sum 函数,传入参数 x
第2-3行: 设定这个设定递归算法的结束条件(if x > 99,return 0)
第4-6行: 在算法流程中调用sum函数自身,通过 return函数执行语句
第7行: 为x赋值为1,用print函数打印运算结果

上述四种方法的运行结果为:
Python基础实战100例插图1

第3期-判断闰年

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

#1 问题描述

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的,补上时间差的年份为闰年,闰年共有366天​

请输入一个年份,判断输出是否为闰年

#2 解题思路

闰年是历法中的名词,分为普通闰年和世纪闰年。
1582年以来设置闰年的规则:
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。​

也就是说
普通闰年:能被4整除,不能被100整除
世纪闰年:能被400整除
在Python中,判断一个数能否被另一个数整除,可用取模(%)的算法;判断年份是否为闰年可用if条件语句

#3 解题方法

#方法一

year = int(input("输入一个年份: "))

if year % 4 == 0:
   if year % 100 == 0:
       if year % 400 == 0:
           print(f"{year} 年是世纪闰年") # 整百年能被400整除的是闰年
       else:
           print(f"{year} 年不是闰年")
   else:
       print(f"{year} 年是普通闰年") # 非整百年能被4整除的为闰年
else:
   print(f"{year} 年不是闰年")

1
2
3
4
5
6
7
8
9
10
11
12

第1行: 用input函数请用户输入一个年份,int函数将input()的字符串转换成整型,并赋值给变量year
第3行: 判断该年份能否被4整除,不能被4整除,转到第11行,输出该年不是闰年
第4行: 若能被4整除,则继续判断该年份能否被100整除,不能被100整除,转到第9行,输出该年是普通闰年
第5-8行: 若能被100整除,继续判断该年能否被400整除,若能被400整除,则为世纪闰年,不能被400整除,则不是闰年

在这里用到了f-string的方法格式化字符串,f是“格式化(format)”的意思,如f”Hello {somevar}”,这种f、引号和{}的组合相当于告诉Python:“嘿!这是一个格式化字符串,把这些变量放到那几个位置”。​

第1期-九九乘法表 (opens new window)中我们同样讲解了用format的方法来格式化字符串,忘记了的小伙伴可以查看哦~

#方法二

year = int(input("输入一个年份: "))

if year % 4 == 0 and year % 100 != 0:
    print(f"{year} 年是普通闰年")
elif year % 400 == 0:
    print(f"{year} 年是世纪闰年")
else:
    print(f"{year} 年不是闰年")

1
2
3
4
5
6
7
8

第1行: 创建变量year,用input()输入年份为其赋值
第3-8行: 用if…elif…else语句进行判断。若该年份可以整除4,但不能整除100,则为普通闰年;若该年份可以整除400,则为世纪闰年;否则,该年份不是闰年

#方法三

year = int(input("输入一个年份: "))

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print(f"{year} 年是闰年")
else:
    print(f"{year} 年不是闰年")

1
2
3
4
5
6

第1行: 创建变量year,用input()输入年份为其赋值
第3-6行: 将判断普通闰年和世纪闰年的方法合并,当该年份能被4整除且不能被100整除或能被400整除时,为闰年,否则不是闰年

第4期-简易计算器

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

#1 解题思路

制作简易计算器实现两数加减乘除等运算,可以分为以下三个步骤:

  • 请用户输入待运算的两个数字
  • 请用户选择运算方法
  • 将运行结果展示出来

#2 解题方法

#方法一

print("简易计算器")

def add(x, y):
    return x + y
def subtract(x, y):
    return x - y
def multiply(x, y):
    return x * y
def divide(x, y):
    return x / y

num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))

print("输入运算:1、相加;2、相减;3、相乘;4、相除")
choice = input("输入你的选择(1/2/3/4):")

if choice == '1':
    print(num1, "+", num2, "=", add(num1, num2))
elif choice == '2':
    print(num1, "-", num2, "=", subtract(num1, num2))
elif choice == '3':
    print(num1, "×", num2, "=", multiply(num1, num2))
elif choice == '4':
    print(num1, "÷", num2, "=", divide(num1, num2))
else:
    print("非法输入")

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

第1行: 打印标题“简易计算器”
第3-10行: 分别定义加、减、乘、除4个数学函数,调用参数x, y, 并用return返回相应的计算
第12-13行: 用input函数请用户输入数字,用int函数把字符转换为整型
第14-15行: print函数提示用户输入运算符并用input函数获取用户输入的运算符号
第18-27行: 用if…elif…else…语句判断用户输入的运算符号,调用前面定义的加、减、乘、除的函数,并打印出相应的运算结果,其余均输出“非法输入”​

代码运行结果如下图所示:
4-1

#方法二

print("简易计算器")

num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))

print("输入运算:1、相加;2、相减;3、相乘;4、相除")
choice = input("输入你的选择(1/2/3/4):")

if choice == '1':
   print(num1, "+", num2, "=", num1 + num2)
elif choice == '2':
   print(num1, "-", num2, "=", num1 - num2)
elif choice == '3':
   print(num1, "×", num2, "=", num1 * num2)
elif choice == '4':
   print(num1, "÷", num2, "=", num1 / num2)
else:
   print("非法输入")

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

第1行: 打印标题“简易计算器”
第3-4行: 用input函数请用户输入数字,用int函数把字符转换为数组
第6-7行: print函数提示用户输入运算符并用input函数获取用户输入的运算符号
第9-18行: 用if…elif…else…语句判断用户输入的运算符号,并打印出相应的运算结果,其余均输出“非法输入”​

代码运行结果如下图所示:
4-2

第5期-猜数字

#1 问题描述

制作一个满足如下功能的猜数游戏:

  • 计算机随机生成一个100以内的正整数;
  • 用户通过键盘输入数字,猜测计算机所生成的随机数。
  • 限定用户的输入次数,如限定用户只能猜测五次,五次未成功,游戏结束

#2 解题思路

首先,计算机随机生成整数,需要引入生成随机数的模块random
其次,定义函数,设置计算机生成数的范围及用户输入数字的次数
最后,用input函数获取用户输入的数字,并用if语句判断大小

#3 解题方法

print("这是一个猜数字游戏,你可以输入1到100之间的数字,但只有5次机会")

from random import randint

def guess (start, end, maxTime):
    value = randint(start, end)

    for i in range(maxTime):
        prompt = '开始猜吧,请输入一个整数:' if i == 0 else '再猜一次:'

        try:
            guessNum = int(input(prompt)) 
            if guessNum == value:
                print("恭喜你,猜对啦!")
                break
            elif guessNum > value:
                print("你猜的太大了!")
            else:
                print("你猜的太小了!")

        except:
            print("请输入整数")
    else:
        print("很遗憾,游戏结束")
        print("正确答案是:",value, "继续努力吧~")

guess(1, 100, 5)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

第1行: 简要介绍猜数字游戏的规则
第3行: 从生成随机数的模块random引入randint函数
第4行: 定义函数guess,传入参数start, end和maxTime
第5行: 创建变量value, 用randint函数确定计算机生成随机数的取值范围
第8行: 使用for循环控制最大猜测次数,次数用完还未猜对,则转到第23行,结束循环
第9行: 创建变量prompt, 如果用户输入的次数i为0,prompt为“开始猜吧,请输入一个整数:”;如果用户输入的次数i不为0,prompt为“再猜一次:”
第11行: 运用try…except异常处理结构,防止用户输入的不是整数,如果try块中的代码引发异常,就执行第21行except块中的代码
第12行: 创建变量guessNum,用input函数获取用户输入的数值,并用int函数将其转化为整型
第13-19行: 用if…elif…else语句判断用户输入数值的大小,若刚好等于计算机设定的数值,则打印”恭喜你,猜对啦!”,并用break退出整个循环;若大于或小于计算机设定的数值,则分别打印输出”你猜的太大了!”或”你猜的太小了!”
第27行: 调用函数guess, 并为start, end和maxTime这三个参数分别赋值为1,100,5

第6期-日期查询

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

#1 问题描述

输入某年某月某日,判断这个日期是这一年的第多少天
如:输入“2020 3 5”后,可以显示“这是这一年的第65天”

#2 解题思路

以3月5日为例,应该先把前两个月的日期加起来,然后再加上5天即本年的第几天
需考虑特殊情况:闰年且输入月份大于2时需多加一天

#3 解题方法

#方法一

print("请输入年月日,判断这个日期是这一年的第多少天")

year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))

months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]

if 1 <= month <= 12:
    sum = months[month - 1]
    sum += day

    leap = 0
    if year % 4 == 0 and year % 100 !=0 or year % 400 == 0:
        leap = 1

    days = [31, 28 + leap, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if day > days[month -1]:
       print("输入的日期错误")

    else:
       if month > 2 and leap == 1:
           sum += 1

       print(f"这是这一年的第 {sum} 天")

else:
      print("输入的月份错误")

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

第1行: 简要描述日期查询的问题
第3-5行: input函数请用户输入年、月、日,int函数将输入的字符串转化为整型
第7行: 创建列表months,列表中的元素为上个月月底是今年的第几天(二月按平年算)
第9-11行: 用if…else语句判断输入的月份是否正确,如果不正确,则转到第27行;如果正确,则通过列表的索引获取上个月之前所有的天数,再加上这个月的天数,就可得到这个日期是这一年的第多少天
第13行: 创建变量leap,赋值为0
第14行: 用if语句判断平闰年,若这一年是闰年,leap赋值为1
第17行: 创建列表days,列表中的元素为每个月的天数
第18-23行: 用if…else语句判断输入的日期是否正确,如果不正确,则打印”输入的日期错误”,否则转到第21行,若为闰年且输入月份大于2,总天数多加一天
第25行: 用f-string的方法格式化字符串,print函数打印输出这是这一年的第多少天​

第3期-判断闰年 (opens new window)有讲解如何判断闰年,忘记了的而小伙伴可以查看哦~

#方法二

print("请输入年月日,判断这个日期是这一年的第多少天")

year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))

import datetime

date1 = datetime.date(year, month, day)
date2 = datetime.date(year-1, 12, 31)
timedelta= (date1 - date2).days

print(f"这是这一年的第{timedelta}天")

1
2
3
4
5
6
7
8
9
10
11
12
13

第1行: 简要描述日期查询的问题
第3-5行: input函数请用户输入年、月、日,int函数将输入的字符串转化为整型
第7行: 导入datetime模块,datetime是python操作日期和时间的内置模块
第9行: 创建变量date1,使用datetime模块中名为date的类,指定参数为用户输入的年月日
第10行: 创建变量date2,指定参数为用户输入的上一年的最后一天
第11行: 将date1、 date2两个日期相减,(date1 – date2).days返回相差天数
第13行: 用print函数打印输出这是这一年的第多少天

第7期-斐波那契数列

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

#1 问题描述

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。

斐波那契数列指的是这样一个数列:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ……
这个数列从第3项开始,每一项都等于前两项之和。

试用Python代码输出斐波那契数列前20项~

#2 解题思路

用Python代码输出斐波那契数列,需把握住数列的特点:从第3项开始,每一项都等于前两项之和
因此我们可以使用递归、for循环等方法实现~

#3 解题方法

#方法一:递归

def fib1(n):
    if n == 1 or n == 2:
        return 1
    return fib1(n - 1) + fib1(n - 2)

for i in range(1, 21):
    print(fib1(i), end=' ')

1
2
3
4
5
6
7

第1行: 定义函数fib1,传入参数n
第2-4行: 用if…else语句进行判断,由于该数列从第三项开始,每个数的值为其前两个数之和,所以当n == 1或 n == 2时,返回值为1,这也是递归的结束条件;否则返回值为前两个数的和,即fib1(n-1) +fib1(n-2)
第6行: 用for语句遍历1-20的整数
第7行: 为参数n赋值为i, 并用end 将print输出到同一行并以空格结尾

递归函数的用法我们在第2期-求100以内奇数和 (opens new window)中有讲,大家可以查看哦~

#方法二:for循环

def fib2(n):
    a, b = 0, 1
    for i in range(n + 1):
        a, b = b, a + b
    return a

for i in range(20):
    print(fib2(i), end=' ')

1
2
3
4
5
6
7
8

第1行: 定义函数fib2,传入参数n
第2行: 为a,b分别赋值为0和1
第3行: 用for循环遍历前n项的整数
第4行: 由于该数列从第三项开始,每个数的值为其前两个数之和,可写成a, b = b, a + b。这个式子中,右边的表达式会在赋值变动之前执行,即先执行右边,如第一次循环得到b–>1,a+b –> 0+1 然后再执行赋值 a,b =1,0+1,所以执行完这条后a=1,b=1
第5行: 返回a的值
第6行: 用for语句遍历前20的整数
第7行: 为参数n赋值为i, 并用end将print输出到同一行并以空格结尾

第8期-鸡兔同笼

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

#1 问题描述

大约在1500年前,《孙子算经》中就记载了这个有趣的问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
意思是,有若干只鸡和兔子关在同一个笼子里,从上面数有35个头,从下面数有94只脚,问:笼子中有多少只鸡?多少只兔子?

我们今天用Python解决鸡兔同笼问题:请用户输入头数和脚数,判断有多少只鸡,多少只兔子~

#2 解题思路

第一步: 用input函数使用户输入头的个数和脚的个数
第二步: 判断鸡和兔子的数量,需要把握住关键条件“鸡+兔=头数;2鸡+4兔=脚数”,用两层for循环遍历鸡和兔的数量,计算结果
第三步: 输出正确结果

#3 解题方法

head = int(input("请输入头数:"))                                                                
foot = int(input("请输入脚数:"))                                                                
x = 0  # 鸡                                                                                    
y = 0  # 兔子                                                                                       
answer = False                                                            

for x in range(head+1):                                                                 
    for y in range(head+1):                                                             
        if x + y == head and 2 * x + 4 * y == foot:                                        
            answer = True                                                                  
            break                                                                          
    if answer:                                                                             
        break                                                                              

if answer:                                                                                 
    print("鸡有", x, "只;兔子有", y, "只")                                                        
else:                                                                                      
    print("此题无解,请重新输入")                                                                    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

第1行: 定义变量head,用input函数使用户输入头数,int函数将其转化为整型
第2行: 同理,定义变量foot,用input函数使用户输入脚数,int函数将其转化为整型
第3-4行: 定义变量x,y,分别表示鸡和兔子的数量,初始赋值均为0
第5行: 定义变量answer,这个问题有没有解,暂时不清楚,所以初始赋值先为False
第7行: 用for循环遍历0至head+1的整数,并为x赋值
第8行: 在for循环的基础上嵌套一个for循环,同样遍历0至head+1的整数,并为y赋值
第9-11行: 用if语句判断,如果两动物的数量和等于head,脚之和等于foot,则answer为True,并用break退出第一重循环
第12-13行: 继续用if语句判断变量x的循环,如果答案为真,则退出循环
第15-18行: 用if…else语句判断,如果答案为真,则用print函数打印鸡和兔的数量,否则打印此题无解

第9期-最大公约数与最小公倍数

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

#1 问题描述

用数字 a 和 b举例最大公约数和最小公倍数:
最大公约数:如果存在数 x, 满足 a 和 b 均可以整除 x,则 x 为 a 和 b 的公约数,当 x 最大时,为最大公约数;
最小公倍数:如果存在数 y, 满足 a 和 b 均可以被y整除,则 y 为 a 和 b 的公倍数,当 y 最小时,为最小公倍数;

请用户输入两个正整数,求其最大公约数和最小公倍数~

#2 解题思路

最大公约数,就是能同时被两个数整除的最大整数,既然要能同时被两个数整除,这个数必然是小于等于两个数中的较小者
第一步: 找出两个数中的较小数
第二步: 从较小数开始遍历到1
第三步: 遍历过程中最先能同时被两个数整除的就是最大公约数

最小公倍数,就是能同时将两个数整除的最小整数,因此这个数必然大于等于两个数中的较大者
第一步: 找出两个数中的较大数
第二步: 从较大数开始递增遍历
第三步: 遍历过程中最先能同时将两个数整除的就是最小公倍数

#3 解题方法

num1 = int(input("请输入一个整数:"))
num2 = int(input("请输入另一个整数:"))

assert num1 > 0 and num2 > 0, "请输入正整数!"

min_num = min(num1, num2)
max_num = max(num1, num2)

for i in range(min_num, 0, -1):
    if num1 % i == 0 and num2 % i == 0:
        break
print(f"{num1}和{num2}的最大公约数是{i}")


while True:
    if max_num % num1 == 0 and max_num % num2 == 0:
        break
    max_num += 1
print(f"{num1}和{num2}的最小公倍数是{max_num}")

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

第1-2行: 分别定义变量num1,num2,input函数使用户输入数字,再用int函数将输入的字符串转换为整型
第4行: 因为对正整数求最大公约数和最小公倍数,所以用assert断言函数限定变量num1和num2大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入正整数!”

该函数的语法结构是:assert 表达式 [, 参数]
assert用来断言该表达式是否为真,若表达式为真,执行后续操作,否则触发异常,引发AssertionError,抛出异常参数,终止代码运行。

第6-7行: 定义变量min_num和max_num,分别用min和max函数找出num1和num2的最小值与最大值
第9-11行: 求最大公约数,用for循环从较小值遍历到1,if语句判断第一次出现能同时被num1、num2整除的数,则为最大公约数,此时break退出循环,终止遍历
第12行: 用print函数打印最大公约数的求值结果
第15-18行: 利用while循环从较大值开始进行递增遍历,if语句判断首次出现能同时将num1、num2整除的数,则为最小公倍数,此时用break退出循环,否则max_num在原有基础上加1,直到满足上述条件,退出循环为止。
第19行: 用print函数打印最小公倍数的求值结果

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容