python基础--除法,取整,取模(取余)(/,//,%),以及int最大值,大数乘法

本文深入讲解了算术运算中的除法、取整和取模操作,通过实例演示了Python中的运算符用法,并对比了int和float类型在大数运算中的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章已经生成可运行项目,

1. 内容简介:

在算术运算中,加减乘比较容易理解,分别用+,-,*来表示;但是,经常容易混淆的是除法,取整,取模这三个操作,今天主要演示除法,取整,取模的用法,以及一些注意事项。

2. 例子程序:

程序清单:

# val_caculate.py
a = 10 # a是整数
print('10/3 = ',10/3)
print('9/3 = ',9/3)
print('10//3 = ',10//3)
print('10%3 = ',10%3)
print('15//4 = ',15//4)

运行结果:

10/3 =  3.3333333333333335

9/3 =  3.0

10//3 =  3

10%3 =  1

15//4 =  3

说明:
   除法:/; 
   取整://;  
   取余:%

   特别注意:对于//,是向下取整,即不会进行四舍五入。所以15//4 =  3的结果是3而不是4。

再来看一个例子:打印int,float的最大值:

import sys

print(sys.maxsize)
print(float('inf'))
print(type(float('inf')))

运行结果:

9223372036854775807

inf

<class 'float'>

说明:
Python的int型最大值用sys.maxsize来表示,在64位系统中,它的值是:9223372036854775807;

Python的float型(浮点数)没有大小限制,最大值用inf来表示,但是超出一定范围就直接表示为inf(无限大),用print(type(float('inf')))可以看出inf是float型,而不是字符串。

例3: 大数乘法举例:


print('10*10 = ',10*10)
print('\n')

#int大数乘法测试
a = 10000000000*10000000000 # int
sum = 1;
for i in range(0,16):
	# print(i)
	sum = sum*a
print('a = ',a)
print('a的16次方,sum = ',sum)
print('\n')

#float大数乘法测试
c = 10000000000*10000000000.0 # float
sum2 = 1;
for i in range(0,16):
	# print(i)
	sum2 = sum2*c
print('c = ',c)
print('cc的16次方,sum2 = ',sum2)


运行结果:

10*10 =  100

a =  100000000000000000000

a的16次方,sum =  100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

c =  1e+20

cc的16次方,sum2 =  inf

说明:

int型的大数乘法,会得到一个很大的数;

float型的大数乘法,超出一定范围就直接表示为inf。


本文章已经生成可运行项目
<think>好的,用户现在让我列举5到8个能用Python解决的简单数学问题,并且要有问题分析和解题流程。首先,我需要确定用户的需求是什么。他们可能刚开始学习Python,或者对数学问题解决感兴趣,想用编程来辅助学习。用户之前问过矩阵乘法,所以可能已经有一些Python基础,现在想扩展应用范围。 接下来,我需要挑选合适的数学问题。这些问题应该涵盖不同的数学领域,比如代数、几何、数论等,同时难度适中,适合初学者。每个问题需要明确的问题描述,分析解题思路,然后给出Python的实现步骤。 第一个问题可能是质数判断,这是基础的数论问题,用Python实现起来不难。质数判断可以通过试除法,或者更高效的算法,但考虑到用户可能刚入门,试除法比较直观。 第二个问题可以考虑斐波那契数列生成,这也是常见的编程练习题,涉及循环或递归。需要解释递归和迭代的区别,可能还要提到递归的效率问题。 第三个问题可以是方程求解,比如二次方程。这里需要处理判别式,判断根的情况,并计算实根或虚根。这能展示条件判断和数学运算的结合。 第四个问题可能是阶乘计算,同样基础,可以用循环或递归,不过递归在Python中有栈限制,需要注意大数的情况。 第五个问题可以选择最大公约数和最小公倍数,用欧几里得算法,展示算法的应用,同时关联到数学定理。 第六个问题可以是几何相关的,比如计算圆的面积和周长,简单但能展示数学公式的直接应用。 第七个问题可以考虑排列组合的计算,用math库中的函数,或者自己实现公式,强调组合数学的应用。 第八个问题可以是素因数分解,展示循环和条件判断的结合,同时分解质因数。 在分析每个问题时,需要确保解题流程清晰,步骤明确。例如质数判断,先处理特殊情况,再用循环试除。斐波那契数列要说明递推关系,避免递归的陷阱。方程求解要分情况讨论,输出不同的结果。 另外,要注意代码的可读性,变量命名清晰,注释适当。例如在二次方程求解中,计算判别式后,根据不同的情况输出实根、重根或虚根,这样用户能理解条件分支的逻辑。 同时,需要提示用户可能遇到的问题,比如输入非数值时的错误处理,但考虑到简单示例,可能暂时忽略异常处理,专注于核心逻辑。 最后,总结这些例子如何帮助用户巩固Python基础,并建议进一步的学习方向,比如算法优化或学习更多数学块。这样用户能有一个明确的学习路径,逐步提升技能。</think>以下是 8 个适合用 Python 解决的典型数学问题及其实现方案,每个案例都包含问题分析和解题流程: --- ### 一、质数判断 **问题**:判断一个数是否为质数 **分析**:质数是大于 1 且只能被 1 和自身整除的数。可用试除法验证 **流程**: ```python def is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5)+1): # 优化:只需检查到平方根 if n % i == 0: return False return True print(is_prime(17)) # 输出 True ``` --- ### 二、斐波那契数列 **问题**:生成前 N 项斐波那契数列(0,1,1,2,3...) **分析**:遵循递推公式 $F(n) = F(n-1) + F(n-2)$ **流程**: ```python def fibonacci(n): a, b = 0, 1 result = [] for _ in range(n): result.append(a) a, b = b, a + b return result print(fibonacci(10)) # 输出 [0,1,1,2,3,5,8,13,21,34] ``` --- ### 三、二次方程求解 **问题**:解 $ax^2 + bx + c = 0$ **分析**:通过判别式 $\Delta = b^2 -4ac$ 判断实数根情况 **流程**: ```python import math def solve_quadratic(a, b, c): delta = b**2 - 4*a*c if delta > 0: x1 = (-b + math.sqrt(delta))/(2*a) x2 = (-b - math.sqrt(delta))/(2*a) return f"两个实根:{x1:.2f}, {x2:.2f}" elif delta == 0: x = -b/(2*a) return f"重根:{x:.2f}" else: real = -b/(2*a) img = math.sqrt(-delta)/(2*a) return f"虚根:{real:.2f}±{img:.2f}i" print(solve_quadratic(1, -5, 6)) # 输出 两个实根:3.00, 2.00 ``` --- ### 四、阶乘计算 **问题**:计算给定整数的阶乘 **分析**:$n! = 1 \times 2 \times ... \times n$,注意处理边界值 **流程**: ```python def factorial(n): if n < 0: raise ValueError("负数无阶乘") res = 1 for i in range(1, n+1): res *= i return res print(factorial(5)) # 输出 120 ``` --- ### 五、最大公约数(GCD) **问题**:用欧几里得算法求两个数的最大公约数 **分析**:基于定理 $gcd(a,b) = gcd(b, a\%b)$ **流程**: ```python def gcd(a, b): while b != 0: a, b = b, a % b return a print(gcd(48, 18)) # 输出 6 ``` --- ### 六、圆的几何计算 **问题**:输入半径计算圆面积和周长 **分析**:直接应用公式 $S = \pi r^2$,$C = 2\pi r$ **流程**: ```python import math def circle_calculator(r): area = math.pi * r**2 circumference = 2 * math.pi * r return round(area,2), round(circumference,2) print(circle_calculator(3)) # 输出 (28.27, 18.85) ``` --- ### 七、排列组合 **问题**:计算排列数 $A(n,k)$ 和组合数 $C(n,k)$ **分析**:用公式 $A(n,k) = \frac{n!}{(n-k)!}$,$C(n,k) = \frac{n!}{k!(n-k)!}$ **流程**: ```python import math def permutations(n, k): return math.perm(n, k) def combinations(n, k): return math.comb(n, k) print(permutations(5,2)) # 输出 20 print(combinations(5,2)) # 输出 10 ``` --- ### 八、素因数分解 **问题**:将整数分解为素因数乘积形式 **分析**:用短除法不断除以最小素因数 **流程**: ```python def prime_factors(n): factors = [] divisor = 2 while divisor <= n: if n % divisor == 0: factors.append(divisor) n = n // divisor else: divisor += 1 return factors print(prime_factors(60)) # 输出 [2, 2, 3, 5] ``` --- **学习建议**: 1. 通过实现这些基础案例巩固 `循环结构`、`条件判断` 等编程基础 2. 尝试为每个案例添加异常处理(如非数字输入检测) 3. 深入时可研究 `SymPy` 等数学专用库的进阶用法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值