Python程序设计之判断与循环结构

178 阅读2分钟
参与拿奖:本文已参与「新人创作礼」活动,一起开启掘金创作之路
1.条件表达式形式:

1.1 条件结构

#if结构
a=[5]
if 1:
	print(a)	#使用整数作为条件表达式
if a:
	print(a)	#使用列表作为条件表达式
	
#if-else 结构
a=[]
if a:
	print(a)
else:
	print('empty')

#if-elif-else结构
a=5
if a>1:
	print(a)
elif a<1:
	print(a-1)
else:
	print(a+1)		

#if嵌套结构
a=3
if a>1:
	if a>2:
		print(a)
	else:
		print(a-1)
else:
	print(a+1)		

#value if (条件表达式) else value2	Python支持的表达式
print(5) if(5>3) else print(6)

合理使用逻辑运算符可以大大提高代码的运行效率,例如下列代码实现在字符串中插入指定字符:

def Join1(chList,sep=','):			#方法一
	return sep.join(chList)
def Join(chList,sep=None):
	return (sep or ',').join(chList)	#方法二
chList=[1,2]
Join(chList,':')
>>>'1:2'

1.2 条件结构案例:

#1 记录用户输入成绩总和,每次输入会提示用户是否继续输入,通过字符串判定是否继续执行
endFlag='yes'
sum=0
while endFlag.lower()=='yes':
	x=input('请输入第一个成绩:')
	x=eval(x)
	if isinstance(x,int) and 0<=x<=100:	#isinstance()比较类型是否符合要求
		sum+=x
	else:
		print('输入数据有误!')	
	endFlag=input('继续输入:(yes or no)')
pritn('你的成绩为:',sum)

#2判断某天是这一年的第几天
import time	#datetime提供了timedelta对象可以方便计算指定日期;还有回答“今天是几号”的timetuple()函数
def dem(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):
		day_month[1]=29
	if month==1:
		return day
	else:
		return sum(day_month[i] for i in range(month-1))+day
		#return sum(day_month[:month-1])
date=time.locatime()
year,month,day=date[:3]
print(dem(year,month,day))						
2.循环结构

2.1 for 和 while两种循环结构:

#while循环结构
while True:
	print(1)	#while循环结构

#while-break结构
a=3
while a>0:
	a-=1
	break

#while-contine结构
while a>0:
	a-=1
	contine

#for循环结构
for i in range(3):
	print(i)

#for-break
a=0
for in in range(5):
	a=a+1
	break
	
#for-continue
for in range(5):
	print(i)
	continue
for i in range(10):
	if i%2==0:
		continue
	print(i,end=' ')				

for i in range(10):
	if i%2==0:
		i+=1		#这里i变量的修改不影响程序的输出,因为Python有基于对值的内存管理方式
		continue
	print(i,end=' ')				

2.2 循环使用案例:

#1实现1到100的累加
s=0
for i in range(1,101):
	s=s+1
print(s)	#方法一

sum=0
i=0
while 0<i<101:
	sum+=i
	i+=1
print(sum)	#方法二	
print(sum(range(1,101)))	#内置函数实现	

#2遍历序列中的元素
list=['a','b','c','d']
for i, in enumerate(list):
	print('第',i+1,'个元素是',v)

i=0
while i<len(list):
	print('第',i+1,'个元素是',list[i])
	i+=1	

#3求水仙花数:水仙花数的所有位数的立方和对于这个数
#例如153=1**3+5**3+3**3
for i in range(100,1000):
	if (i//100)**3+(i//10%10)**3+(i%10)**3==i:
		print(i)
	
#4判断素数
import math
n=input('请输入一个整数:')
n=int(n)
m=math.ceil(math.sqrt(n)+1)
for i in range(2,m):
	if n%i==0 and i<n:
		print('No')
		break
	else:
		print('Yes')	

#5鸡鸭同笼问题
#假设鸡兔共30只,脚90只,鸡兔各多少只
for i in range(0,31):
	if 2*i+4*(30-i)==90:
		print('鸡',i,'只',';','兔',30-i,'只')

#6编写程序计算C(n,j)即在n个元素中选取j个元素有多少种选法
n=input('请输入总共的选择:')
n=int(n)
j=input('请输入j的值:')
j=int(j)
result=1
if j>n:
	print('j must smaller or equal to n') 
min,max=min(1,n-j),max(1,n-j)
for i in range(n,0,-1):
	if i>max:
		result *=i
	elif i<=min:
		result/=i
print(result)