#python基础
1.判断
1.1 布尔值
典型值:True,False;
非典型值:[],{}…
**布尔函数:**bool(data),返回一个布尔值。
a = bool(12)
print(a)
#True
1.2 if
if 条件判断:
a = 12 if a > 12:#为真时执行print()函数 print("此数大于12!") #input()函数:内置函数,实现从终端获取一个数据,以字符串格式返回 <class 'str'> #python内置了浮点型float(data),整型int(data),布尔型bool(data),复数complex(data1,data2)等强制转换函数可将字符串类型转为相应的数据类型。 a = input("请输入你的名字:") print(a.endswith("acke")) #判断是否以(str.endwith("data"))data结尾,是则为True;反则False
1.3 if …else
语法
if 表达式: 代码块1 else: 代码块2
实例
a = 12 if a >= 12: print("此数大于等于12") else: print("此数不大于等于12") #此数大于等于12 print("-------------------------------------------------------------") a = input("please input a number:\n") try:#异常处理 a = int(a) if(isinstance(a,int)) and 0 <= a <= 100: #isinstance()函数判断a是不是int数据类型 print("这是0-100整数!") except ValueError: print("数据输入有误!")
1.4 if…elif…else(多级条件判断)
语法
if 表达式1: 代码块1 elif 表达式2: 代码块2 else: 代码块3
实例
score = 80 if score >= 90: print("优秀") elif score >= 80: print("良好") elif score >= 70: print("中等") elif score >= 60: print("及格") else: print("不及格") #良好
补充:
#字符串内置方法:str.方法 #.upper():判断字符串是否是大写字母 #.lower():判断字符串是否是小写字母 #.isalnum():判断字符串是否由字母,数字,汉字组成 #.isdigit():判断字符串是否是由十进制数字组成 #.isnumberic():判断字符串是否是由数字组成 #.isdecimzl():判断字符串是否是由数值组成 #.istitle():判断每个单词的首字母是否大写 data = '15' data2 = data.isdigit() print(data2) str1 = '\r\n' str2 = str1.isspace() print(str2)
1.5 判断嵌套
语法
if condition: if condition: code else: code elif condition: code else: code
实例
# 如何优化‘从终端完成数据记录,通过if...else条件判断,得出这个数为100以内的整数’ a = input("please input a number:\n") try:#异常处理 if a.isdigit(): a = int(a) if 0 <= a <= 100: #isinstance()函数判断a是不是int数据类型 print("这是0-100整数!") else: print(a+"不是十进制数字字符串") except ValueError: print("数据输入有误!")
2.循环
2.1 for
2.1.1 break与continue
break vs continue
两个都是python关键字,用来控制循环。break跳出***当层***循环,continue结束***当次***循环。
实例
# 6. 用户登陆:验证用户名和密码正确性,最多验证三次 # 用户名正确, # 验证密码 # 密码正确-登陆成功 # 密码错误-登陆失败,登陆次数加1,再次输入密码 # 用户名错误-登陆次数加1,继续用户名 count=0 while count<3: username = input('请输入用户名') password = input('请输入密码') a = 2-count if username=='admin' and password == 'admin': print('登陆成功') # 跳出整个循环,当break外存在多层循环时,跳出本层循环 break else: if a!=0: print('登陆失败,剩余次数为:',a) continue elif a==0: print('密码被锁定,请稍后再试') break count+=1
2.2.2 for
语法
for element in seq:#可迭代对象 code
实例
myList = [1, 2, 3, 4, 4] myStr = "qwert" myTuple = (1, 2, 3, 5, 4) myDic = { "1":1, "2":2, "3":3, "4":4, "5":5 } for element in myList: print(element,end=",") print() for element in myDic.items(): print(element,end=",") # 1,2,3,4,4, # ('1', 1),('2', 2),('3', 3),('4', 4),('5', 5) print("——————————————————————————————————————————————————————") # range()函数与序列索引操作类似 # range(stop) -> range object, 当range函数传递一个参数时-创建range对象,for循环访问时从0-stop-1 # range(start, stop[, step]) -> range object, # 当range函数传入两个参数时,for循环访问时从start-stop-1, # 当range函数传入三个参数时,for循环访问时从strat到stop-1,但访问间隔为step参数(step值可正可负) for i in range(1,100,2): print(i,end=',') print() myStr = 'AaBbCcDd' print(myStr[::2]) ''' 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97,99, ABCD '''
练习
#九九乘法表 #方法一: for i in range(1,10): for j in range(1,1+i): print(i,"*",j,"=",i*j,end=" ") print() #方法二: i = 1 while i <= 9: j = 1 while j <= i: print("%d *%d = %d\t" % (i, j, i*j), end="") j += 1 print() i += 1
格式化符号
编号 格式化符号 含义 1 %c 字符(python中不存在字
符类型:'a’是代表字符)2 %s 在格式化前先通过str()函
数将数据转为字符串类型3 %i 带符号的十进制数 4 %d 与%i作用相同 5 %o 八进制整数 6 %x 十六进制整数 7 %X 与%x作用相同 8 %e 指数符号 9 %E 指数符号 10 %g %e+%f 11 %G %E+%F 12 %f 浮点数 13 %u 无符号的十进制整数
2.2 while
语法
while condition:#条件成立时,循环执行code code #当condition永远为真时,即为死循环 #释放变量申请内存空间,del 变量名
实例
i = 1 while i <= 10: print(i,end=" ") i+=1 #1 2 3 4 5 6 7 8 9 10
练习
#while实现10*10的“方阵” i=1 while i <= 10: j=1 while j <= 10: j+=1 print("*",end=" ") print() i+=1 #斐波那契数列实现 i = 0 a, b = 1, 1 while i <= 7: print(a, end=" ") a, b = b, a + b i += 1 #1 1 2 3 5 8 13 21 #输出 1 2 3 4 5 6 7 9 10 i=0 while i < 10: i += 1 if i==8: continue print(i,end=" ") # 1 2 3 4 5 6 7 9 10
3.函数
含义
用于进行某种功能计算的一系列语句组成的具有名称的组合。
语法
def functionName (参数列表): code #code若干语句构成的代码块 #functionName应该符合像标识符那样的命名规范。 #函数调用格式 functionName(实参) #或者 if __name__ == '__main__': hellopython()
实例
def helloPython(): print("Hello world!") #主函数:__main__ #主函数作用: #1.源文件执行的入口。 #2.调试代码时使用。 if __name__ == '__main__': helloPython()
参数与返回值
含义
参数:函数在定义时,位于括号里面的数据,参数可有零个到多个。
返回值:函数体中存在一个关键字return,后面所带的内容就是返回值,函数在调用过程中遇到return就退出。
实例
def fib(n): a,b=1,1 while a<n: a,b=b,a+b print(a,end=" ") return a value = fib(100) print(value) #1 2 3 5 8 13 21 34 55 89 144 144
注意:
位置参数:(positional arguments)就是其他语言的参数,其他语言没有分参数的种类是因为只有这一种参数,所有参数都遵循按位置一一对应的原则。
默认参数:在Python中完全等同于C++,引入默认参数是为了在某些情境下提供方便。
形式:参数名 = 默认值
,默认参数必须在最右端(没有可变参数、命名关键字参数和关键字参数),这样才能被解释器正确识别,否则会产生二义性。实例
def fun1(a=10, b): return a + b >>> fun1(30) #二义性:这个30究竟是赋值给a的还是b的
可变参数:
方式一:
Python函数提供了可变参数,来方便进行参数个数未知时的调用。可变参数将以tuple形式传递。
格式:
*参数
(即在参数前加*号)实例
def getsum(*num):#num是可迭代的对象 sum = 0 for n in num: sum += n return sum
方式二:
是以dict形式传递,即可变参数传递的是参数值,关键字参数传递的是参数名:参数值键值对。
形式:
**kw
这是惯用写法。实例
# 函数不定长传参的第二种方式:参数列表中出现‘**’时,代表多余以‘=’定义参数会转为字典形式 def fun(a,b, *args,**kwargs): print(a) print(b) print(args) print(kwargs) fun(1,2,3,4,5,6,7,8,9,10,'a','b','c','d','e',name='alex',age=20) ''' 1 2 (3, 4, 5, 6, 7, 8, 9, 10, 'a', 'b', 'c', 'd', 'e') {'name': 'alex', 'age': 20} '''
可变参数可以接受0个或者多个参数。
关键字参数:
实例
def find_area(width, height): return width * height value = find_area(width=12.0,height=13.0) print(value)
命名关键字参数:Python中的命名关键字参数对传入的关键字参数做了进一步的限制。
格式:在关键字参数前增加一个”**”。*
实例
def personinfo(name, age, *, gender, city): #只能传递gender和city参数 print(name, age, gender, city) personinfo('Steve', 22, gender = 'male', city = 'shanghai') #Steve 22 male shanghai
关键字参数和命名关键字参数的区别在于,前者可以传递任何名字的参数,而后者只能传递*后面名字的参数。
一次函数调用可以传递以上所述任何一种参数或者多种参数的组合,当然也可以没有任何参数。
正如默认参数必须在最右端一样,使用多种参数时也对顺序有严格要求,也是为了解释器可以正确识别到每一个参数。
顺序:基本参数、默认参数、可变参数、命名关键字参数和关键字参数