【目录】
1. 【目标任务】
2. `/求商 %取余`
3. `f`格式化字符串
4. 程序代码
5. math.sqrt(num)求平方根
6. 遍历到平方根
7. 两种for循环迭代区别
8. 遍历到平方根的代码
9. return False语句
【正文】
1. 【目标任务】
质数( Prime Number )又称素数。
一个大于1的自然数,除了1和它本身外,不能被其他自然数整除的数叫做质数。
要求用户输入一个数字,判断并输出该数字是否为素数。
【思路解析】
先判断输入的数字是否大于1,用if语句实现。
从2开始,逐个尝试将该数字除以从2到该数字的平方根之间的所有自然数,用for循环range函数实现。
判断是否存在能整除该数字的数,用if语句实现。
如果存在能整除的数,则该数字不是素数。
如果不存在能整除的数,则该数字是素数。
【为什么除到平方根】
判断质数的方法有很多种,其中一种常见的方法是通过除以平方根来判断。
这是因为在一个数的因数中,较大的因数必然与较小的因数成对出现。
如果一个数不是质数,那么它一定可以被分解为两个因数的乘积。
其中一个因数小于等于它的平方根,另一个因数大于等于它的平方根。
举个例子,如果我们要判断一个数n是否为质数,我们只需要从2开始到n的平方根范围内进行遍历。
检查是否存在能整除n的因数。
如果存在这样的因数,那么n就不是质数;否则,n就是质数。
这种方法可以有效地减少遍历的次数
,提高判断质数的效率。
当然你不除到平方根,直接除到n-1
也可以实现。
2. /求商 %取余
print(8/4) # 8除以4,商为2.0
print(8%4) # 8除4,取余,余数为0
【终端输出】
2.0
0
3. f
格式化字符串
name = "安迪"
city = "云南"
school = "复旦大学"
print(f"大家好,我叫{name},来自{city},毕业于{school}!")
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
【编写思路】
我们要输出的内容是: 大家好,我叫安迪,来自云南,毕业于复旦大学!
把要格式化的内容用英文大括号加变量名 {变量名}
替换:安迪
替换为大括号加变量名{name}
。云南
替换为大括号加变量名{city}
。复旦大学
替换为大括号加变量名{school}
。
格式化模板为:"大家好,我叫{name},来自{city},毕业于{school}!"
添加格式化符号 f
。
4. 程序代码
【温馨提示】
老规矩,但凡要求从终端输入的,初学者都先给变量赋具体的值,代码检验没有错误后再将变量替换成从终端输入。
【代码示例】
# def 语句自定义一个函数
# 函数名:is_prime
# 参数:num
# def语句以冒号结尾,冒号后的代码有4个空格的缩进
def is_prime(num):
# 首先用if语句判断输入的数是否小于等于1
# if 语句以冒号结尾,冒号后的代码有4个空格的缩进
# 如果num小于等于1
if num <= 1:
# return False 的作用是结束函数执行,下面的代码不会被执行
return False
# range函数含前不含后,(2, num)取到的值是2到num-1
# 遍历从2到num-1的整数
# 变量i会依次取2、3、4、…、num-1的值
# for 语句以冒号结尾,冒号后的代码有4个空格的缩进
for i in range(2, num):
# 如果num*i 余数等于0
# %的作用是取余,余数为0,表示能整数
if num % i == 0:
# 程序结束
return False
# num*i 余数不等于0,条件满足,返回True
return True
# 先给变量num赋一个具体的值
# 不断的更改num的值,检测代码的正确性
num = 7
# 判断并输出结果
# 调用函数语法:函数名(参数)
# 将参数num的值传递个上面的自定义函数
# 如果调用is_prim函数返回的是True
if is_prime(num):
# 输出num是质数
print(f"{num} 是质数。")
# 如果用is_prim函数返回的是False,输出num是不是质数
else:
print(f"{num} 不是质数。")
【终端输出】
7 是质数。
大家要依次给num=1,2,3,4,5,6,7,8,9赋值,检测代码的准确性。
代码没有问题时将num=1替换成input语句,代码如下:
【最终代码】
# def 语句自定义一个函数
# 函数名:is_prime
# 参数:num
# def语句以冒号结尾,冒号后的代码有4个空格的缩进
def is_prime(num):
# 首先用if语句判断输入的数是否小于等于1
# if 语句以冒号结尾,冒号后的代码有4个空格的缩进
# 如果num小于等于1
if num <= 1:
# return False 的作用是结束函数执行,下面的代码不会被执行
return False
# range函数含前不含后,(2, num)取到的值是2到num-1
# 遍历从2到num-1的整数
# 变量i会依次取2、3、4、…、num-1的值
# for 语句以冒号结尾,冒号后的代码有4个空格的缩进
for i in range(2, num):
# 如果num*i 余数等于0
# %的作用是取余,余数为0,表示能整数
if num % i == 0:
# 程序结束
return False
# num*i 余数不等于0,条件满足,返回True
return True
# 获取用户输入的数字
# input接收到的数据类型为字符串类型
# 用int函数将其转换为整数
num = int(input("请输入一个数字:"))
# 判断并输出结果
# 调用函数语法:函数名(参数)
# 将参数num的值传递个上面的自定义函数
# 如果调用is_prim函数返回的是True
if is_prime(num):
# 输出num是质数
print(f"{num} 是质数。")
# 如果用is_prim函数返回的是False,输出num是不是质数
else:
print(f"{num} 不是质数。")
【终端输出】
5 是质数。
5. math.sqrt(num)求平方根
math是Python的内置库,不需要额外安装。
【语法】
math.sqrt(num)
【参数】
num是需要计算平方根的数值,可以是整数或浮点数。
【返回值】
返回num的平方根值。
【代码示例】
import math
math.sqrt(9)
【终端输出】
3.0
6. 遍历到平方根
若要除到平方根只需要将上述代码中的
for i in range(2, num):
替换成
for i in range(2, int(math.sqrt(num)) + 1):
【语法解析】
首先是用for语句创建一个循环。
循环的范围是2到int(math.sqrt(num)) + 1
。
math.sqrt(num)
函数来计算num的平方根,并使用int()函数将结果转换为整数。
range函数含前不含后,因此要在math.sqrt(num)
的数值上+1
。
注意要先import math
导入math模块。
7. 两种for循环迭代区别
【代码示例】
num = 9
for i in range(2, num):
print(i)
【终端输出】
2
3
4
5
6
7
8
【代码示例】
import math
num = 9
for i in range(2, int(math.sqrt(num)) + 1):
print(i)
【终端输出】
2
3
观察上面的输出结果,大家可以感受到使用平安根可以提高程序运行的效率。
8. 遍历到平方根的代码
【代码示例】
# def 语句自定义一个函数
# 函数名:is_prime
# 参数:num
# def语句以冒号结尾,冒号后的代码有4个空格的缩进
def is_prime(num):
# 首先用if语句判断输入的数是否小于等于1
# if 语句以冒号结尾,冒号后的代码有4个空格的缩进
# 如果num小于等于1
if num <= 1:
# return False 的作用是结束函数执行,下面的代码不会被执行
return False
for i in range(2, int(math.sqrt(num)) + 1):
# 如果num*i 余数等于0
# %的作用是取余,余数为0,表示能整数
if num % i == 0:
# 程序结束
return False
# num*i 余数不等于0,条件满足,返回True
return True
# 获取用户输入的数字
# input接收到的数据类型为字符串类型
# 用int函数将其转换为整数
num = int(input("请输入一个数字:"))
# 判断并输出结果
# 调用函数语法:函数名(参数)
# 将参数num的值传递个上面的自定义函数
# 如果调用is_prim函数返回的是True
if is_prime(num):
# 输出num是质数
print(f"{num} 是质数。")
# 如果用is_prim函数返回的是False,输出num是不是质数
else:
print(f"{num} 不是质数。")
【终端输出】
11 是质数。
9. return False语句
return False表示某个条件或操作的结果为假。
当函数执行到return False时,它会立即返回False,并结束函数的执行。
return True表示某个条件或操作的结果为真。
当函数执行到return True时,它会立即返回True。