函数传参
python中,函数传递参数本质上是一种赋值操作
def func(arr)
arr = 1
print(arr)
a=2
func(a)
print(a)
- 首先有两个变量arr和a,有两个对象1和2
- a绑定2,func(a)将a绑定的对象2贴上arr标签
- 这时,对象1尚未创建,2贴上a标签和arr标签
- $arr=1$操作将2上arr标签撕下,创建对象1并贴上arr标签
- 输出结果
1 2
输入输出
print()函数
>>>print("字符串")
字符串
>>>print("str1","str2","str3")
str1 str2 str3#空格取代逗号
print(a+b**c)#会先计算数值再输出
print(sum(a,b/c))#优先执行sum()函数
==原型==
$$print(self,*args,sep=' ',end='\n',file=None)$$
- sep参数:分隔符,多个输出结果(返回值)之间的分隔符,默认为space,可以手动设置
- end参数:打印后结束方式,默认为$\n$换行,可设置为' '则不换行
input()函数
获得用户输入,并保存为一个==字符串==
如果输入的是数字可通过int()将对象转换为数字
>>>age=input("Please input your age:")
Please input your age:18
>>>print(age)
'18'#type(age)==<class'str'>
>>>age=int(age)
>>>print(age)
18
- $input()$可以传入一个字符串,会被打印以提示输入
- 使用$int()$时,如果两边有多余的空格可以用$strip()$方法去除,保存字符串对象时也是如此
- $input()$可用于吃掉回车,暂停程序运行
[[数据类型及运算符#字符串格式化]]
工具函数
id()
示例
[[数据类型及运算符#赋值方式]]
id(变量名)得到变量绑定对象的内存地址
变量绑定的对象改变,查询结果改变,原对象内存地址不变
type()
- 一个参数时返回对象的类型
- 三个参数返回新的对象类型
- type(name,bases,dict)
- name -- 类的名称。
- bases -- 基类的元组。
- dict -- 字典,类内定义的命名空间变量。
# 一个参数实例 >>> type(1) <type 'int'> >>> type('runoob') <type 'str'> >>> type([2]) <type 'list'> >>> type({0:'zero'}) <type 'dict'> >>> x = 1 >>> type( x ) == int # 判断类型是否相等 True # 三个参数 >>> class X(object): ... a = 1 ... >>> X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X >>> X <class '__main__.X'>
next()
[[基础数据结构#迭代器对象]]
字符串函数
字符串对象自带函数
- 去除首尾空格或字符$lstrip()$,$rstrip()$,$strip()$
str=" 人生苦短,我用Python。 " print(str.lstrip())#去除左边空格并输出 print(str.rstrip())#去除右边空格并输出 print(str.strip())#去除左右空格并输出
str_1='333与君相别离,不知何日是归期,我如朝露转瞬晞。333'
print(str_1.strip('3'))#左右删去所有字符3后输出
==需要注意,该函数本质上是截取字符串的一部分,而非修改原对象==
$lstrip()$将返回返回截掉字符串左边的空格或指定字符后生成的**新字符串**。
```python
str=" 人生苦短,我用Python。 "
str.lstrip()#仅仅调用函数不赋值也不输出
print(str)
'''
此时输出结果仍为
人生苦短,我用Python。
左右均带空格
说明对象未改变
'''
-
判断字符串是否以某字符串开头/结尾$startswith()$,$endswith()$
是返回True,否返回Falsestr="山有木兮木有枝,心悦君兮君不知。" print(str.starswith("山"))#返回True并输出 print(str.endswith('不知'))#没有'。'返回False并输出
-
格式化字符串$$f"字符串内容{其他字符串变量名}字符串内容"$$
返回格式化后字符串
[待填坑]() -
分割字符串$split()$
以某字符分割字符串为几个字串,子串中不包括分割符,返回字符串列表str='根,紧握在地下,叶,相触在云里,每一阵风过,我们都互相致意。' strP=str.split(',')#注意中英文标点 print(str)#输出原字符串对象 print(strP)#输出分割得到的字符串列表 print(strP[1])#输出"紧握在地下"
数值处理函数
- 绝对值
$$abs()$$ - 取整
$$int()$$ - 四舍五入(返回整数)
$$round()$$ - 判断大小、真假(布尔函数)
$$bool()$$
[[数据类型及运算符#布尔值与空值]]
数据类型转换函数
- $$int(x [,base])$$
x为原对象,base为可选参数,默认为10表示十进制 - $$float(x)$$
- $$complex(real[,imag])$$
real为实部,imag为可选的虚部参数 - $$str(x)$$
- $$repr(x)$$
将对象x转化为表达式字符串(python解释器能够读取的形式) - $$chr(x)$$
将一个整数转换为一个字符 - $$ord(x)$$
将一个字符转换为它的整数值 - $$hex(x)$$
将一个整数x转换为其十六进制形式的字符串 - $$oct(x)$$
将一个整数x转换为其八进制形式==字符串== - $$eval(str)$$
用来计算在字符串中的有效Python表达式,并返回一个对象 - $$tuple(s)$$
将序列s转化为元组返回 - $$list(s)$$
- $$set(s)$$
将序列s转换为可变集合 - $$frozenset(s)$$
将序列s转换为不可变集合 - $$dict(d)$$
将(key,value)形式元组序列d转换为一个dict
数据类型高低之分
-
"较高数据类型"和"较低数据类型"是在==隐式类型转换==中用于描述数据精度的概念。
-
==精度==可以理解为数据类型能够表示的信息量或详细程度。在Python中,数据类型的"高"和"低"主要根据它们的精度来判断。
-
这里的"较高"数据类型指的是能够表示更多信息(或更精确信息)的数据类型,而"较低"的数据类型则表示的信息较少。
具体来说,比如浮点数就比整数"高",因为浮点数不仅可以表示整数,还可以表示小数。所以在你的例子中,整数就会被自动转换为浮点数,以保证信息不丢失。 -
再比如,复数(complex)就比浮点数(float)和整数(int)"高",因为复数可以表示实数和虚数,而浮点数和整数只能表示实数。所以在进行运算时,如果操作数包含复数,那么其他的浮点数或整数就会被转换为复数。
-
通常情况下,Python的数据类型的"高低"可以按照如下顺序理解:
布尔(bool)< 整型(int) < 浮点型(float)< 复数(complex)。
这个顺序主要根据数据类型可以表示的信息范围和精度来确定的。
不同数据类型之间能否随意转化
虽然Python提供了一些内置的函数来实现不同数据类型之间的转换,如$int(), float(), str(), list(), tuple(), set()$等等,但并非所有类型的数据都可以被转换成其他任意类型。转换是否可行,主要取决于数据本身是否包含足够的信息来表示目标类型。
例如:
你可以轻松地将整数转换为字符串,因为每一个整数都有一个明确的字符串表示(例如,整数123可以表示为字符串"123")。
类似地,一个只包含数字字符的字符串(如"123")可以被转换为一个整数或浮点数,因为这个字符串中包含了足够的信息来表示一个数字。
然而:
对于一个非数字字符串(如"Hello"),它无法被转换为一个整数或浮点数,因为这个字符串并不包含任何可以表示一个数字的信息。
对于一个列表或元组,它可以被转换为一个集合(如果它的元素是不可变的),但不能被转换为一个整数,因为一个集合或列表中的元素无法合理地表示为一个单独的数字。
总的来说,数据类型的转换==并非无限制==,它取决于原始数据是否能够提供足够的信息来表示目标类型。当你在编程中进行类型转换时,需要注意这一点。
判断与循环语句
$if,elif,else$语句
if condition1:
1条件成立时要执行操作
elif condition2:
1不成立2成立时执行操作
else:
1,2均不成立时执行操作
eg.
name=input('Who are you?')
age=input('How ord are you?')
if name=='朱冰倩'and age>=19:
print('Daring,long time no see.')
elif name=='朱冰倩' and age==18:
print('Thank you for being in my life.')
else:print('こんにちわ。')
- 假值 :None、空列表、空集合、空字典,空元组、空字符串、0、False 等
- 真值 :非空列表、非空集合、非空字典,非空元组、非空字符串、非 0 数值、True 等
$for,break,continue$语句
普通循环
for x in 序列(list,dict,string,tuple等): 执行代码块
- for会依次将序列中元素提取出赋值给x
带索引循环
- 如果想在循环的时候,把索引也取出来,可以加一个 $enumerate()$ 函数。
- $enumerate()$函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
- Python 2.3. 以上版本可用,2.6添加 start 参数。
- $$enumerate(sequence,[start=0])$$
- sequence:可迭代对象
- 可选参数start:下标起始位置值,默认为0
galgames=['咖啡馆','千恋万花','天使骚骚'] for index,galgame in enumerate(galgames,1): print(f'今天玩第{index}部作品{galgame}。')
output
今天玩第1部作品咖啡馆。
今天玩第2部作品千恋万花。
今天玩第3部作品天使骚骚。break
中断当前循环,不同层级break中断不同循环
continue
continue停止执行后续代码进入下一循环
for-else
- for循环后接与for同级else,当for循环正常执行完时,会自动进入else;
- 如果因为break中断循环(continue视为正常),则不会进入else分支
while
while 判断条件: 执行语句
在判断条件成立(True)时,循环执行语句;不成立,跳出循环
==避免死循环出现,检查执行语句能否保证打破循环条件or触发break==while-else
同for-else,当不通过break跳出while循环时,执行后面的else分支;否则异常退出不执行else