参与拿奖:本文已参与「新人创作礼」活动,一起开启掘金创作之路
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)