1. 条件表达式
1. python中条件表达式的值只要不 False、0(0.0,0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为True等价
例:
>>> if 666:
print(True)
True
>>> #使用整数作为条件表达式
>>> a=[1,2,3]
>>> if a:
print(a)
[1, 2, 3]
>>> #使用列表作为条件表达式
>>> a=[]
>>> if a:
print(a)
else:
print('empty')
empty
>>>
注:Python中boolean类型的False与True,首字母大写
2. Pyhton中的赋值语句
>>> a,b,c=1,2,3
>>> print(a,b,c)
1 2 3
>>>
3.赋值语句的拓展
>>> x=input('输入一个字符串:')
>>> a,b=map(int,s.split())
注:x是接收的一个字符串,map(类型,split(分隔符)),如果定义好的类型,接收的值必须是同类型的值,否则会报错(这里必须接收的是两个整型的值,且必须由空格分开)
4. Python中的交换值
>>> a,b=b,a
>>> print(a,b)
2 1
>>>
2.选择结构
1. 单分支,语法:
if 表达式:
语句块
注:不管是选择结构还是循环结构,Python中的表达式可已不括起来,但是后面的:是不可缺少的,结构中的语句块必须做相应的缩进(4个空格为缩进单位),也就是一定要层次分明
2.双分支,语法:
if 表达式:
语句块
else:
语句块
4. 多分支结构,语法:
if 表达式1:
语句块1
elif 表达式2: #这里的elif 与其他语言else if 一样,但在python中不能用else if
语句块2
elif 表达式3:
语句块1
……
else:
语句块n
3.循环结构
while 结构:
while 条件表达式:
循环体
else:
代码块
for 结构:
for 取值 in 序列或迭代对象:
循环体
else ;
代码块
注:循环结构中的else子句,可带可不带,其用法是循环因条件表达式,不成立或序列遍结束 ,去执行else中的语句,如果因break语句导致循环提前结束则不会执行else的语句
例:
>>> a=100
>>> while a<200:
print(a,1)
a=200
else:
print(a,2)
100 1
200 2
>>>
4.应用
1. 质数(Prime number,又称素数),指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。
例:求100内素数
>>> j=0
>>> for i in range(1,100,2): #偶数不是素数,1-100的随机数,步长为2
for j in range(3,i+1,1): #判断是否是素数,i+1的随机数的产生不包括i+1
if i%j==0:
break
if j==i:
print(i)
等价于:
>>> for i in range(3,100,2):
for j in range(3,int(i**0.5)+1,1):
if i%j==0:
break
else:
print(i)
注:这里没有包含2的素数,这里为了方便,是设计步长为2
2. 求下平均成绩,输入yes时输入下一个成绩,输入no时得结果
numbers=[]
while True:
x=input("输入成绩:")
#异常处理,保证为实数
try:
numbers.append(float(x))
except:
print("不合法分数?")
while True:
flag=input('是否继续输入下一个数:(yes/no)')#执行到这句时,flag声明成功,如果不执行的话,下面if中的flag会报错
if flag not in('yes','no'):
print('只能输入yes/no')
else:
break
if flag=='no':#python中只要用到说明就已经声明了
break
print(sum(numbers)/len(numbers))
注:变量的声明,在使用时,也就是赋值时,变量声明成功,不要求范围,与java不一样
例:比较
python
if 1<2:
a=1
print('a声明成功')
java(或其他语言)
if(1<2){
a=1;
}
print("a声明不成功,且报错")
3. 编写程序,判断今天是今年的第几天
import time #导时间的包
date=(time.localtime()) #获取当前时间
print(date) #获取年,月,日,时,分,秒……
year,month,day=date[0:3]#切片,拿到年月日
#year,month,day=2019,1,15#检测1月的时候
print(year,month,day)
day_month=[31,28,31,30,31,30,31,31,30,31,30,31]
if year%400==0 or (year%4==0 and year%100!=0): #判断是否是闰年(闰年29天)
day_month[1]=29
print(sum(day_month[0:month-1])+day) #之所以是month-1,不包含自身