python基础学习(二)

分支/选择结构——单分支、双分支、多分支

顺序结构、选择结构、循环结构

选择中再做选择,就是选择嵌套

1、单分支和双分支

是否先执行否事件的问题

2、多分支和分支嵌套

多条件、多语句块

if……elif……else……

前面分支不满足后,再进行后面分支的判断(范围小的先选,大的后选)

mark = eval(input("输入成绩:"))
if mark < 60:
    print("不及格")
elif mark < 70:
    print("及格")
elif mark < 80:
    print("中")
elif mark < 90:
    print("良")
else:
    print("优")

选择结构的嵌套

在if语句中又包含一个或者多个if语句
应用:求一元二次方程的根

a,b,c=eval(input("请输入三个系数,以逗号隔开:"))
if a == 0:
    print("不是一元二次方程")
else:
    delta = b*b-4*a*c
    if delta == 0:
        print("两个相同实根") 
    elif delta > 0:
        print("两个不同实根")
    else:
    print("有不同虚根")

应用:判断三角形

import math
a,b,c = eval(input("输入三角形的三条边,以逗号隔开:"))
if a+b>c and a+c>b and b+c>a:
    mark = 0
    if a=b or b=c or a=c:
        mark = 1
        if a=b=c:
            print("等边",end="")
        else:
            print("等腰",end="")
    if a*a+b*b=c*c or a*a+c*c=b*b or c*c+b*b=a*a:
    # if math.fabs(a*a+b*b-c*c)<0.001 or math.fabs(a*a+c*c-b*b)<0.001 
    #or math.fabs(c*c+b*b-a*a)<0.001: #这一行是因为有时候在判断直角三角形时,输入边长为小数时,在python的计算中,不满足勾股定理
        mark = 1
        print("直角",end="")
    if mark = 0:
    print("一般",end="")
else:
    print("不能构成",end="")
print("三角形")

循环结构

条件循环(while)、遍历循环(for)、break和continue、循环的嵌套(多循环)、循环与else搭配

条件循环(while)

while<条件>表达式:

循环体语句块

#求1到100相加的和
i = 1
sum = 0
while i < 101:
    sum = sum + i
    i = i + 1
    # i = i + 2 奇数和
print("总和")

先判断再执行,因此循环语句块有可能出现不执行的情况

遍历循环(for)

for 循环变量 in 遍历结构:循环体语句块

出现range()函数,有start,end,step(可省略,默认步长为1)

可遍历字符串、range函数产生的数字序列、列表、元组、字典、文件

#计算1-2+3-4+5-6+...n的值
n = eval(input("请输入n的值:"))
s = 0
for i in range(1,n+1):
    s = s + i*(-1)**(i+1) #或者用幂函数s = s + i*pow(-1,i+1)
print(s)

当循环次数很明确的时候,采用遍历循环

循环辅助控制语句:break和continue

break:for或者while循环体执行时候,当满足某个条件,需要中止当前循环跳出循环体时,用break语句跳出并结束当前整个循环,执行循环后的语句

continue:跳过当前这次循环,继续进行下次循环

# 求100-200之间所有非3的倍数之和
sum = 0
for i in range(100,201):
    if i % 3==0:
        continue #跳过3的倍数进入相加的循环
    sum=sum+i
print("sum=",sum)

循环嵌套

循环体内又循环

应用1:打印九九乘法表

# 打印九九乘法表
for i in range(1,10)
    for j in range(1,10)
        #print(i,'*',j,'=',i*j) # 九九乘法式子打印成一列
        #print(i,'*',j,'=',i*j,end='') #不再每个式子都换行了
        print('%d*%d=%2d'%(i,j,i*j),end='') #可以避免因为结果一位数和两位数导致的不对齐
    print() # 就可以在1*9后2*9后...每九个式子换行了
# 打印九九乘法表下三角
for i in range(1,10)
    for j in range(1,i+1) #i还是1~9,但是此时j不再是1~9了
        print('%d*%d=%2d'%(i,j,i*j),end='') 
    print() 

#打印九九乘法上三角
for i in range(1,10)
    print(''*(i-1)*7,end='') # 每行前面打印7*(i-1)个空格,得到上三角
    for j in range(i,10) #i还是1~9,但是此时j此时是i~9了
        print('%d*%d=%2d'%(i,j,i*j),end='') 
    print() 

应用2:求2-100之间所有素数

判断一个整数n是否为一个素数,就是用2~n-1的每个数去除它,有因子不是素数,无因子,是素数

import math
#n = eval(input("请输入一个整数:"))
for n in rang(2,101):
    m = int(math.sqrt(n)) #比如36只需要判断2,3,4,5,6
    for i in range(2,m+1):
        if n%i = 0:
            break
    else:
        print(n,'是素数')

应用3:随机数求圆周率

一个半径为1的圆(为正方形内切圆),圆心为原点,同心边长为2的正方形

采用撒点,看落在圆内几率的方式计算圆周率

import random
s = eval(input("请输入循环次数:")) #单位正方形内总的撒点数
n = 0                              #n表示1/4圆内部的撒点数
for i in range(1,s+1):
    x,y = random(),random()        #撒点的x和y坐标
    if x*x+y*y<=1:                 #如果点在圆的内部则计数
        n = n+1
    pi = 4 *(n/s) #计算pi
    print("圆周率是:{}".format(pi))

程序调试的方法:

print:在程序代码怀疑出错的代码附近,用print语句打印变量,看变量是否正确

断点法,打断点

常见异常:

类型错误(TypeError),是字符串和数字相加发生的错误

值错误(ValueError),转字符串为整数时导致错误

语法错误(SyntaxError),少了冒号

下标错误(IndexError),试图引用不存在的下标

异常处理:

try:

expect:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值