Python 部分语法

一、使用一个input( )同时获取多个输入

  1. map()
    函数语法: m a p ( f u n c t i o n , i t e r a b l e , . . . ) map(function, iterable, ...) map(function,iterable,...)
  • function – 函数
  • iterable – 一个或多个序列
  • map()函数接收两个参数,一个是函数,一个是序列
  • map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
  1. str.split( )
  • 通过指定分隔符对字符串进行切片,将一个字符串分裂成多个字符串列表,缺省时根据空格切分,可指定逗号或制表符等。
  1. map(function,input(“以空格分开”).split())
  • input( )输出的是用空格分开的字符串,
  • split( )会分割开各个值并放到列表中
  • 此时在列表中的值是字符串,如果要用于运算必须在map( )中利用int( )或者float( )等处理,再赋值
  • 如果需要赋值的值都是字符串的话则无需map函数了
a,b =input('输入a,b空格隔开:').split()
#此时a,b均为str型
a,b =map(int,input('输入a,b空格隔开:').split())
#此时a,b为int型

二、数字处理精度和精确运算

  1. 内置函数round()
    r o u n d ( v a l u e , n d i g i t s ) \color{#FF0000}{round(value, ndigits)} round(value,ndigits),对浮点数进行四舍五入
  • ndigits>0,四舍五入到指定的小数位

  • ndigits=0, 四舍五入到最接近的整数

  • ndigits<0 ,在小数点左侧进行四舍五入

  • 如果round()函数只有number这个参数,等同于ndigits=0

    四 舍 五 入 规 则 : \color{#FF0000}{四舍五入规则:}

  • 要求保留位数的后一位<=4,则舍去,如5.214保留小数点后两位,结果是5.21

  • 要求保留位数的后一位“=5”,且该位数后面没有数字,则不进位,如5.215,结果为5.21

  • 要求保留位数的最后一位“=5”,且该位数后面有数字,则进位,如5.2151,结果为5.22

  • 要求保留位数的最后一位“>=6”,则进位。如5.216,结果为5.22

round(2.2456,1)
2.2
round(2.2456,2)
2.25
round(2.2456)
2
round(2.2456,-1)
0.0

C o m m e n t \color{#FF0000}{Comment} Comment
不要将 舍 入 r o u n d \color{#8470FF}{舍入round} round 格 式 化 f o r m a t \color{#8470FF}{格式化format} format输出搞混淆了。 如果我们目的只是简单的输出一定宽度的数,不需要使用 round() 函数。 而仅仅只需要在格式化的时候指定精度即可。

  1. 执行一定精度的浮点数运算
    当使用浮点数进行精度运算,由于浮点数并不能精确的表示十进制数。所以即使是最简单的数学运算也会产生小的误差。但我们仍可以在一定精度内求解

有函数
f ( x ) = x 5 − 15 x 4 + 85 x 3 − 225 x 2 + 274 x − 121 f(x)=x^5-15x^4+85x^3-225x^2+274x-121 f(x)=x515x4+85x3225x2+274x121
已知f(1.5)>0,f(2.4)<0,且在[1.5,2.4]区间只且只有一个根,求该根。要求四舍五入到小数点后6位
输出格式:该方程在[1.5,2.4]区间的根,精确到小数点后6位

def f(x):   # 封装 高次方程带入求值 的函数
    result = pow(x, 5) - 15 * pow(x, 4) + 85 * pow(x, 3) - 225 * pow(x, 2) + 274 * x - 121
    return result

a = 1.5
b = 2.4
c = (a + b) / 2          # 浮点型不可能完全等于零
while abs(f(c)) > 1e-6:  # 所以为了判断需要,根据题目一个范围1e-6,即10的-6次方
    if f(a) * f(c) < 0:  # 若abs(f(c))精度超过6时的值,都当作等于0;
        b = c            # 通过二分法计算、缩减范围
    else:
        a = c
    c = (a + b) / 2
print("{:.6f}".format(c))

此处,因为二分法的得到的一个值恰巧为根的可能性极小,但我们可以限定解的精度。
此处while abs(f(c)) > 1e-6的含义为:

  • abs(f(c)) <= 1 0 − 6 10^{-6} 106while循环停止,即将此后abs(f(c))的值都看作0
  • abs(f(c))的小数点精度<6,始终大于 1 0 − 6 10^{-6} 106,所以此判定方法即限定abs(f(c))值的精度
  • 高于此精度的值都看作0

三、无穷大与NaN

Python并没有特殊的语法来表示这些特殊的浮点值,但是可以使用 float() 来创建它们。

import math
print( float('inf') )  # inf
print( float('-inf') ) # -inf
print( float('nan') )  # nan
 
a = float('inf')
print( math.isinf(a) ) # true
 
# 无穷大数在执行数学计算的时候会传播
print( a+45 ) # inf

四、函数的参数传递

  1. def 保留字 定义一个函数
def <函数名>(<参数列表>):
	<函数体>
	return <返回值列表>
  • 定义函数时,有些参数存在默认值,即部分参数不一定需要调用程序输入,可以在定义函数时直接为这些参数指定默认值。,若函数调用时,没有传入对应的参数值,即使用函数定义时的默认值替代。
>>>def dup(str,times = 2):
	print(str * times)
>>>dup('knock~')
knock~knock~
>>>dup('knock~', 4)
knock~knock~knock~knock~
  • 由于函数调用时需要按顺序输入参数,可选参数必须定义在非可选参数的后面。在参数前增加一个*号可以设计其为可变参数
# 在参数名前面的*表示b是一个可变参数
>>>def vfunc(a, *b):
	print(type(b))
	for n in b:
	a += n
	return a
>>>vfunc(1,2,3,4,5)
<class 'tuple'>
15
  1. lambda函数——匿名函数
    用于定义简单的,能在够在一行内表示的函数
<函数名> = lambda <参数列表> : <表达式>

五、改变Python递归深度

import sys
sys.setrecursionlimit(2000)  # 2000是新的递归层数

六、序列封包 / 解包

  1. 序列封包
    把多个值赋给一个变量时,Python会自动的把多个值封装成元组,称为序列封包。
>>>a = 1,2,3
>>>print(a)
(1,2,3)
>>>type(a)
<class 'tuple'>
  1. 序列解包
  • 把一个序列(列表、元组、字符串等)直接赋给多个变量,此时会把序列中的各个元素依次赋值给每个变量,但是元素的个数需要和变量个数相同,这称为序列解包。
>>>b = 'qwer'         # 创建一个元组
>>>c = tuple(b)
>>>print (c,type(c))    # 打印 ('q', 'w', 'e', 'r') <class 'tuple'> 
k1,k2,k3 = c
# 元素个数与变量个数不相等时,解包会报错:ValueError: too many values to unpack (expected 3) 

>>>k1,k2,k3,k4 = c    # 序列解包
>>>print (k1,k2,k3,k4)
q w e r

# 实现变量的值交换
>>>k1,k2,k3,k4 = k4,k3,k2,k1
>>>print (k1,k2,k3,k4)   
r e w q

 # 不解包进行变量的值交换将会报错
tyui = 1,2,3,4
t,y,u,i = i,u,y,t
NameError: name 'y' is not defined
  • 在序列解包时,只想解出部分元素时,可以在变量的左边加*,该变量就会变成列表,保存多个元素
a = tuple(range(10))
print(a)    # 打印 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
 
# 只解出0到2,3到9保存为一个列表
b0,b1,b2,*b3 = a
print (b3)    # 打印 [3, 4, 5, 6, 7, 8, 9]
 
# 只解出8到9,0到7保存为一个列表
*c1,c2,c3 = a
print (c1)    # 打印 [0, 1, 2, 3, 4, 5, 6, 7]
 
# 只解出0和9,1到7保存为一个列表
c1,*c2,c3 = a
print(c2)    # 打印 [1, 2, 3, 4, 5, 6, 7, 8]

七、代码多行书写(语句分割符)

  • 如果使用语法括号对,语句可以横跨数行
    如果在封闭的(),{},[]这类配对括号中编写代码,那么Python允许直接在下一行继续输入语句,直到Python解释器到达你输入闭合括号所在的行,语句才会结束。
  • 如果语句以反斜杠\结尾,就可以横跨数行。
  • 字符串字面量有特殊规则
    三重引号字符串块可以横跨数行。
  • 其他规则
  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_泥鳅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值