Python 基础
- 类型转换
-
eval()函数
将字符串str当成有效的表达式来求值并返回计算结果,多用于执行sql语句。
rex='12+3.5' result=eval(rex); print(result) #result=15.5
-
取整
- 向下取整
num=3.8372 print(num//1)#3.0
- 向上取整
print(math.ceil(2.3))
- 去小数点
print(int(num))#3
- 四舍五入
print(round(num))#4
- 保留小数
时分秒demoprint(float('%.2f'%num))#保留两位小数 3.84
sec=10000-31 hour=sec//(60*60) hour=str(hour) if hour>9 else '0'+str(hour) minute=(sec%(60*60))//60 minute=str(minute) if minute>9 else '0'+str(minute) second=sec%60 second=str(second) if second>9 else '0'+str(second) print('%s:%s:%s'%(hour,minute,second))
- 向下取整
-
- 运算符
a,b,c,d='spam' print(a) #a=s.一一对应 x,*y='spam' #*通配符,表示剩余的数据 print(x) #x=s,y=['p', 'a', 'm'] print(y) print(3**3) #9
- is,in
email='lzhan@163.com.cn' if ('@' in email) and '.' in email: print('is email') a=12 b=12.0 print(a is b) #false print(a == b) #true
- 逻辑控制语句-if
-
语法规则
a=12;b=a+1 if a>10: a=a+10 print('a=',a)
- 行结束没有分号
- 没有语句块大括号,使用语句缩进
- 条件部分没有括号
- 分号用于多条简单的语句放在同一行,作为分隔符
demo
while True: reply =input('Enter text:') if reply == 'stop': break elif not reply.isdigit(): print('Bad'*8) else: print(int(reply)**2) print('bye')
-
条件语句
练习:用户输入年龄,如果大于18岁,显示“成年”;否则显示“未成年”age=int(input('请输入年龄')) if age>18: print('成年') else: print('未成年')
-
多条件
if 判断条件1: 执行语句1…… elif 判断条件2: 执行语句2…… else: 执行语句3……
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
备注
python 复合布尔表达式计算采用短路规则,即如果通过前面的部分已经计算出整个表达式的值,则后面的部分不再计算。如下面的代码将正常执行不会报除零错误,但是如果改为or则会出错a=0 b=1 if ( a > 0 ) and ( b / a > 2 ): print "yes" else : print "no"
-
if嵌套
if 条件1: 满足条件1 做的事情1 满足条件1 做的事情2 ...(省略)... if 条件2: 满足条件2 做的事情1 满足条件2 做的事情2 ...(省略)...
-
三元运算符
x=1 if x>0: a=True else: a=False f=True if x>0 else False print(a)
-
课后练习
石头剪刀布游戏:剪刀(0) 石头(1) 布(2)
import random player = input('请输入:剪刀(0) 石头(1) 布(2):') player = int(player) computer = random.randint(0,2) # 用来进行测试 #print('player=%d,computer=%d',(player,computer)) if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)): print('获胜,哈哈,你太厉害了') elif player == computer: print('平局,要不再来一局') else: print('输了,不要走,洗洗手接着来,决战到天亮')
-
- 逻辑控制语句-if
-
循环
i = 0 while i<10000: print("我错了") i+=1
-
while
count = 0 while count < 5: print(count, " is less than 5") count = count + 1 else: print(count, " is not less than 5")
练习:计算1~100之间偶数的累积和(包含1和100)
j=0 total=0 while j<=100: total=total+j j=j+2 else: print(total)
-
嵌套循环
i = 1 while i<=5: j = 1 while j<=5: print("* ",end='') j+=1 print("\n") i+=1
练习:九九乘法表
i=0 while i<10: j=1 while j<=i: total=i+j print(str(j)+'+'+str(i)+'='+str(total),end=' ') j+=1 print() i+=1
-
for
#!/usr/bin/python # -*- coding: UTF-8 -*- for letter in 'Python': # 第一个实例 print '当前字母 :', letter fruits = ['banana', 'apple', 'mango'] for fruit in fruits: # 第二个实例 print '当前水果 :', fruit print "Good bye!"
fruits = ['banana', 'apple', 'mango'] for index in range(len(fruits)): print '当前水果 :', fruits[index] else: print('over')
-
break,continue
-
break/continue只能用在循环中,除此以外不能单独使用
-
break/continue在嵌套循环中,只对最近的一层循环起作用
-
-
range()
arr=[1,2,3,4,5,6,7,8] print(arr[1::2]) print(arr[::2]) for i in range(0,len(arr),2): print(i)
arr1=['a','b','c'] arr2=[97,98,99] li=list(zip(arr1,arr2)) print(li) #转化为字典 dic=dict(zip(arr1,arr2)) print(dic) for(x,y) in zip(arr1,arr2): print(x,':',y)
-