python(3)

104 阅读5分钟

程序的描述方式

1.自然语言

image.png

2.流程图

image.png

伪代码

image.png

#coding:utf-8
r=eval(input('请输入圆的半径:'))
area=3.14*r*r
perimeter=2*3.14*r
print('圆的面积是:',area,'周长是:',perimeter)

程序的组织结构

1.顺序结构

image.png

2.选择结构

image.png

a.单分支结构

number=eval(input('请输入您的6位中奖号码:'))
if number==987654:  #等值判断
    print('恭喜您,中奖了!')
if number!=987654  #不等值判断
    print('您未中奖。')

!!使用if语句时,如果语句块中只有一句代码,可以将语句块直接写在冒号的后面

a=10
b=5
if a>b:max=a
print('a和b的最大值为:',max)


image.png

b.双分支结构

number=eval(input('请输入您的6位中奖号码:'))
if number==987654:  
    print('恭喜您,中奖了!')
else
    print('您未中奖。')
#以上代码可以使用条件表达式进行简化
reslut='恭喜您,中奖了!'if number==987654 else'您未中奖。'
print(result)
#最简化
print('恭喜您,中奖了!'if number==987654 else'您未中奖。')

image.png

c.多分支结构

当表达式结果都为false时,会执行else语句,所以else语句并不是必须的、可以没有


d.嵌套

image.png


e.多条件

在使用and连接多个条件判断时,只有同时满足多个条件,才能执行if后面的语句块。

在使用or连接多个条件判断时,只要满足多个条件中的一个,就可以执行if后面的语句块

f. 模式匹配

match...case

模式匹配 是其他语言中switch的加强版。

score=input('请输入成绩等级:')
match score:
    case 'A':
       print('优秀')
    case 'B':
       print('良好')

3. 循环结构

a.遍历循环结构for

image.png image.png

range()函数

range()函数,产生一个[n,m)的整数序列,包含n,但不包含m。

image.png

b.无限循环结构while

image.png

answer=input('今天要上课吗? yes/no')#(1)初始化变量
while answer=='yes':               #(2)条件判断
    print('要上课')                #(3)语句块
    answer=input('今天要上课吗? yes/no')#(4)改变条件

案例

使用while循环模拟用户登录,且只有三次机会

i=0
while i<3:#执行三次0、1、2 
user_name=input('请输入你的用户名:') 
pwd=input('请输入你的密码') 
if user_name=='xm' and pwd=='88888': 
    print('系统正在登录中...')
    i=8  #改变变量 8<3 Flase退出while循环 
else: 
    if i<2:
        print('用户名或密码不正确,您还有',2-i,'次机会')  
        i+=1 #改变变量
if i==3: 
    print('三次都错误')

c.嵌套循环

image.png

案例

嵌套循环打印星号图形

# 长方形 三行四列
for i in range(1,4):
    for j in range(1,5):
        print('*',end='')#end结束符为空
    print()              #换行
————————————————————————————
# 三角
for i in range(1,6):
    for j in range(1,i+1):
        print('*',end='')
    print()
————————————————————————————
#倒三角
for i in range(1,6):
    for j in range(1,7-i):
        print('*',end='')
    print()
————————————————————————————
#等腰三角形
for i in range(1,6):
    for j in range(1,6-i):
         print(' ',end='')
    for k in range(1,i*2):
        print('*',end='')
    print()
————————————————————————————
#菱形(只有奇数行才能打印出菱形)
row=eval(input('请输入菱形的行数'))
if row%2==0:                     #判断函数的奇偶性
    print('重新输入')
    row=eval(input('请输入菱形的行数'))#现在假设为7
#------上半部分
top_row=(row+1)//2 #(7+1)/2
for i in range(1,top_row+1):
    for j in range(1,top_row+1-i):
         print(' ',end='')
    for k in range(1,i*2):
        print('*',end='')
    print()
#------下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
    for j in range(1,i+1):
        print(' ',end='')
    for k in range(1,2*bottom_row-2*i+2):
        print('*',end='')
    print()
————————————————————————————
#空心菱形(只需加一个判断:只有在第一个和最后一个时才打印星号,不然就打印空格)
row=eval(input('请输入菱形的行数'))
if row%2==0:
    print('重新输入')
    row=eval(input('请输入菱形的行数'))#现在假设为7
#------上半部分
top_row=(row+1)//2 #(7+1)/2
for i in range(1,top_row+1):
    for j in range(1,top_row+1-i):
         print(' ',end='')
    for k in range(1,i*2):
        if k==1 or k==i*2-1:
          print('*',end='')
        else:
            print(' ',end='')#空格而不是空字符串
    print()
#------下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
    for j in range(1,i+1):
        print(' ',end='')
    for k in range(1,2*bottom_row-2*i+2):
        if k==1 or k==2*bottom_row-2*i+2-1:
           print('*',end='')
        else:
            print(' ',end='')
    print()

程序的跳转语句

break

image.png

1.break在无限循环while中的使用

s=0
i=1
while i<11:
    s+=i
    if s>20:
        print('累加和大于20的数是:',i)
        break
    i+=1

2.用break来代替上用户名案例中通过改变变量的方式

i=0
while i<3:#执行三次0、1、2
    user_name=input('请输入你的用户名:')
    pwd=input('请输入你的密码')
    if user_name=='xm' and pwd=='11111':
        print('系统正在登录中...')
        break
    else:
        if i<2:
            print('输入错误,您还有',2-i,'次机会')
        i+=1 # 用户名不正确的时候的改变变量
else:
    print('三次都错误')

3.break在遍历循环for中的使用

image.png

continue

image.png

i=1
while i<=100:
    if i%2==1:  #奇数
        i+=1
        continue#不再执行后面的代码
    s+=i
    i+=1
print('1-100之间的偶数和为:',s)

空语句pass

image.png

实战

九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print(str(j)+'*'+str(i)+'='+str(i*j),end='\t')
    print()

猜随机数

random()函数

产生随机数的代码如下:
import random
rand=random.randint(1,100)#包含1也包含100

#产生随机数
import random
rand=random.randint(1,100)#包含1也包含100

count=1 #记录猜数次数,循环初始化
while count<=10:
    number=eval(input('有一个数,在1~100,请你猜一猜:'))
    if number==rand:
        print('猜对了')
        break
    elif number>rand:
        print('大了')
    elif number<rand:
        print('小了')
    count+=1
if count<=3:
    print('恭喜,你一共猜了',count,'次')
elif count<=6:
    print('还可以,你一共猜了',count,'次')
else:
    print('继续努力,你一共猜了',count,'次')