分支结构
形式:
''' if 表达式: 语句 '''运行结果:
请输入两个数(a,b):2,3 max=3运行结果:
Please input the x,y,z:4,3,2 Small to big:2 3 4形式:
''' if 表达式: 语句1 else: 语句2 '''Line 1输入时必须得先定一个类型:input()默认返回字符串类型
year = int(input("请输入年份:")) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: print("%d年是闰年" % year) else: print("%d年是平年" % year)运行结果:
请输入年份:2000 2000年是闰年题目:程序运行时自动产生1~5之间的随机数,接着等待键盘输入猜的数字,若猜对,则显示“猜对了”;否则,显示“猜错了” (1)生成随机数:random库,使用之前需要导入库import random (2)a,b之间(包括a,b)的随机数randint(a,b)
import random number=random.randint(1,5) guess=int(input("请输入数字(1至5):")) if guess==number: print("猜对了!") else: print("猜错了!,正确数字为%d"%number)运行结果:
请输入数字(1至5):4 猜错了!,正确数字为5形式:
if 表达式1: 语句块1 elif 表达式2: 语句块2 …… elif 表达式m: 语句块m else: 语句块n函数为y=x(x<1);2x+1(1≤x<10);5x-17(x≥10)
x=float(input("请输入x的值:")) if x<1: print(x) elif 1<=x<10: print(2*x+1) else: print(5*x-17)起步价7元,最多行驶3公里;3~8公里,超出部分按1.7元/公里计算;8公里以后超出部分按2.0元/公里计算,其中不足1公里,按1公里计算。要求:输入所行驶里程数,计算并输出车费 (int)为向下取整,下列程序有个数学问题,当里程数为整数时不符合
d=float(input("请输入公里数:")) if d<0: print("Error!") else: if d<=3: fee=7 elif d<=8: fee=7+(int)(d-2)*1.7 else: fee=7+5*1.7+(int)(d-7)*2.0 print("出租车费用为:%6.2f元"%fee)根据对齐关系来确定if之间的逻辑关系
某段程序连续被有规律地重复执行时使用循环控制语句
当表达式的值为真(非0)时,重复执行语句,直到表达式值为假,跳出循环
先判断表达式,后执行语句
无论是否执行循环体,均执行else语句,例如:
count=int(input()) while count<5: print(count,"is less than 5") count+=1 else: print(count,"is not less than 5")若循环体中因为执行了break语句而退出,则不会执行else语句,前提是找到了满足要求的元素(循环体执行过一次)
运行结果:
3#输入3 3 is less than 5 4 is less than 5 5 is not less than 5 7#输入7 7 is not less than 5f通过遍历任意序列的元素来建立循环,针对序列的每一个元素执行一次循环体(列表、字符串、元组都是序列)
①序列的所有元素都被访问后,执行else语句 ②若因为执行了break语句而退出,则不会执行else语句(循环体执行过一次) ③若最后一个元素不符合要求,也相当于所有元素被访问,依然会执行else语句 ②:
①、③:
range([start,]end[,step])([]表示可省) start默认值为0;step默认值为1;不包含end
>>> for i in range(5): print(i) 0 1 2 3 4 >>> for i in range(2,4): print(i) 2 3 >>> for i in range(2,20,3): print(i) 2 5 8 11 14 17不换行处理:print("*",end="") 换行操作:print() ①
n=int(input()) for j in range(1,n+1): for i in range(1,2*j): print("*",end="") print()运行结果:
9 * *** ***** ******* ********* *********** ************* *************** *****************②
n=int(input()) for j in range(1,n+1): for i in range(1,n-j+1): print(" ",end="") for i in range(1,2*j): print("*",end="") print()运行结果:
9 * *** ***** ******* ********* *********** ************* *************** *****************运行结果:
1*1= 1 1*2= 2 2*2= 4 1*3= 3 2*3= 6 3*3= 9 1*4= 4 2*4= 8 3*4=12 4*4=16 1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81题目:用一元钱换成一分、两分、五分的硬币共50枚的换币方案
设1分、2分、5分各i,j,k枚
i+j+k=50 i+2j+5k=100
运行结果:
0 50 0 3 46 1 6 42 2 9 38 3 12 34 4 15 30 5 18 26 6 21 22 7 24 18 8 27 14 9 30 10 10 33 6 11 36 2 12限定k的范围
for k in range(0,21): for j in range(0, 51): i=50-k-j if i+2*j+5*k==100: print(i,j,k)i+j+k=50 i+2j+5k=100 等价于j+4k=50
for k in range(0,13): j=50-4*k i=50-j-k print(i,j,k)算法的设计很重要!!!
eval()的使用见链接二、1.1.2
s=1 count=1 x,n=eval(input()) while count<=n: s*=x count+=1 print(s)前100项相加见上2.4.1
s=0 x=1 n=int(input()) while x<=n: s+=x x+=1 print(s)①for语句,限定计算前n项,n越大结果越准确
s=1 k=1 n=int(input()) for i in range(1,n+1): s+=1/k k*=1+i print(s)②while语句,限定结束项小于10^(-m),m越大结果越准确
s=1 k=1 n=1 while abs(1/k)>=10**-18: s+=1/k k*=(n+1) n+=1 print(s)运行结果:
0.5235987755 #π/6 0.49999999991487076