python小记3

本节需要了解:

  1. 程序的描述方式
  2. 程序的组织结构
  3. 顺序结构
  4. 常用的条件语句
  5. and和or运算
  6. 循环结构for与while
  7. 程序跳转语句break和continue
  8. pass空语句
  9. 程序流程图
  10. 课堂小任务

1.程序的描述方式

  1. 自然语言:使用人类语言,直接描述程序,比如:IPO描述(输入数据→处理数据→输出结果)
  2. 流程图:是最直观易懂的表达方式,主要适用于较短的算法
  3. 伪代码:介于自然语言和编程语言之间的一种算法描述语言

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAjlKHcI-1670290067758)(attachment:image.png)]

r=eval(input('请输入圆的半径:'))
S=3.14*r*r
C=2*3.14*r
print('圆的面积为:',round(S,2))
print('圆的周长为:',round(C,2))
请输入圆的半径:3
圆的面积为: 28.26
圆的周长为: 18.84

2.程序的组织结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rrIJ1KwE-1670290067759)(attachment:image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBgrUVsG-1670290067759)(attachment:image.png)]

1.顺序结构

# 赋值运算符的执行顺序从右到左
name='张三' # 将'张三'赋值给name
age=20 # 将20赋值给age
a=b=c=d=100 # 将a,b,c,d的值同时赋为100,链式赋值
name1,age1='李四',22 # 元组分解赋值
print(name1,age1)
[name2,age2]=['王五',30] # 列表分解赋值
print(name2,age2)
a,b,c,d='room' # 字符串分解赋值
print(a,b,c,d)
a,*b='room'# 扩展的解包赋值
print(a,b)
print('----------输入输出语句,也是典型的顺序结构--------------')
name=input('请输入您的姓名:')
age=eval(input('请输入您的年龄:'))
lucky_number=eval(input('请输入您的幸运数字:'))
print('姓名:',name)
print('年龄:',age)
print('幸运数字:',lucky_number)
李四 22
王五 30
r o o m
r ['o', 'o', 'm']
----------输入输出语句,也是典型的顺序结构--------------
请输入您的姓名:爱听歌的阿漓
请输入您的年龄:20
请输入您的幸运数字:2
姓名: 爱听歌的阿漓
年龄: 20
幸运数字: 2

2.选择结构

if语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2RBg9oIH-1670290067759)(attachment:image.png)]

number=eval(input('请输入您的六位中奖号码:'))
# 使用if语句
if number==123456:
    print('恭喜您,中奖了!')
if number!=123456:
    print('您与大奖擦肩而过!')
# 以上if判断的表达式,使用比较运算符,称为比较表达式
请输入您的六位中奖号码:123456
恭喜您,中奖了!
# 0的布尔值是False,非0的布尔值是True
n=98 # 赋值
if n%2: # 98%2 的余数为0
    print(n,'为奇数')
if not n%2:
    print(n,'为偶数')
98 为偶数
# 判断一个字符串是否为空字符串
# 空字符串的布尔值是False,非空字符串的布尔值是True
x=input('请输入一个字符串:')
if x:
    print('x是非空字符串')
if not x:
    print('x是空字符串')
请输入一个字符串:
x是空字符串

表达式也可以是一个单纯的变量

flag=eval(input('请输入一个布尔类型的值:True或False'))
if flag: # flag是一个布尔类型的变量,值为True或False
    print('flag的值为True')
if not flag:
    print('flag的值是False')
请输入一个布尔类型的值:True或False3>2
flag的值为True
# 使用if语句,如果语句只有一句代码,可以将语句直接写在冒号的后面
a=10
b=5
if a>b:max=a
print('a和b的最大值为:',max)
a和b的最大值为: 10

if语句的常见问题

  1. 忘记加:
  2. 缩进错误

if…else…语句

number=eval(input('请输入您的六位中奖号码:'))
if number==123456:
    print('恭喜您中奖了!')
else:
    print('很遗憾,大奖与您擦肩而过!')
请输入您的六位中奖号码:123456
恭喜您中奖了!
# number==123456为True时,将'恭喜您中奖了!'的值赋值给result,否则将'很遗憾,大奖与您擦肩而过!'赋值给result

number=eval(input('请输入您的六位中奖号码:'))
result='恭喜您中奖了!'if number==123456 else '很遗憾,大奖与您擦肩而过!'
print(result)
请输入您的六位中奖号码:123456
恭喜您中奖了!

多重if

score=eval(input('请输入你的成绩:'))
# 判断
if score<0 or score>=100:
    print('成绩有误')
elif 0<=score<60:
    print('E')
elif 60<=score<70:
    print('D')
elif 70<=score<80:
    print('C')
elif 80<=score<90:
    print('B')
else:
    print('A')
请输入你的成绩:55
E

嵌套if

answer=input('请问,您喝酒了么?y/n')
if answer=='y': # 代表喝酒了
    proof=eval(input('请输入酒精含量:'))
    if proof<20:
        print('构不成酒驾,祝您一路平安')
    elif proof<80:
        print('已构成酒驾标准,请不要开车')
    else:
        print('已达到醉驾标准,请千万不要开车')
else:# 代表没喝酒
    print('你走吧,没你啥事儿')
    
请问,您喝酒了么?y/ny
请输入酒精含量:12
构不成酒驾,祝您一路平安

and与or

and连接条件:需要同时满足多个条件

or连接条件:只需满足其中一个条件即可

user_name=input('请输入您的用户名:')
pwd=input('请输入您的密码:')
if user_name=='爱听歌的阿漓' and pwd=='123456':
    print('登陆成功!')
else:
    if user_name!='爱听歌的阿漓':
        print('登录失败,用户名不正确!')
    else:
         print('登录失败,密码不正确!')

请输入您的用户名:爱听歌的阿漓
请输入您的密码:123456
登陆成功!
score=eval(input('请输入您的成绩:'))
if score<0 or score>100:
    print('成绩无效')
else:
    print('您的成绩为:',score)
请输入您的成绩:34
您的成绩为: 34

3.循环结构

遍历循环for

# 遍历字符串
for i in 'hello':
    print(i)
h
e
l
l
o

range()函数:

产生一个[n,m)的有序数列

for i in range(1,11):
    print(i,end=' ')
1 2 3 4 5 6 7 8 9 10 
for i in range(1,11):
    if i%2:
        print(i,'是奇数')
    else:
        print(i,'是偶数')
1 是奇数
2 是偶数
3 是奇数
4 是偶数
5 是奇数
6 是偶数
7 是奇数
8 是偶数
9 是奇数
10 是偶数
# 计算1-10之间的累加和
sum=0 # 用于存储累加和
for i in range(1,11):
    sum+=i
print('1-10的累加和:',sum)
1-10的累加和: 55
# 计算100-999之间的水仙花数

for i in range(100,1000):
    sd=i%10
    tens=i//10%10
    hundred=i//100
    if sd**3+tens**3+hundred**3==i:
        print(i)
153
370
371
407

遍历循环的扩展形式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SfAegPur-1670290067760)(attachment:image.png)]

基本使用

# 计算1-10之间的累加和
sum=0 # 用于存储累加和
for i in range(1,11):
    sum+=i
else:
    print('1-10的累加和:',sum)
1-10的累加和: 55

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ng7tLZw-1670290067760)(attachment:image.png)]

无限循环while

  1. 初始化变量
  2. 条件判断
  3. 循环体
  4. 改变变量

answer=input('今天要上课么?y/n') # 1. 初始化变量
while answer=='y': # 2. 条件判断
    print('好好学习,天天向上!') # 3. 循环体
    answer=input('今天要上课么?y/n') # 4. 改变变量
今天要上课么?y/ny
好好学习,天天向上!
今天要上课么?y/ny
好好学习,天天向上!
今天要上课么?y/nn
# 求1-100之间的累加和
sum=0# 存储累加和
i=1 # 1. 初始化变量
while i<101: # 2. 条件判断
    sum+=i # 3. 循环体
    i+=1 # 4. 改变变量
print('1-100之间的累加和:',sum)
1-100之间的累加和: 5050

无限循环whlie的扩展形式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L8Uyl66b-1670290067760)(attachment:image.png)]

# 求1-100之间的累加和
sum=0# 存储累加和
i=1 # 1. 初始化变量
while i<101: # 2. 条件判断
    sum+=i # 3. 循环体
    i+=1 # 4. 改变变量
else:
    print('1-100之间的累加和:',sum)
1-100之间的累加和: 5050

使用无限循环while模拟实现登录

i=0 # 循环执行的次数
while i<3: # 0 1 2 当i=3时  3<3 False,循环结束
    user_name=input('请输入您的用户名:')
    pwd=input('请输入您的六位数密码:')
    # 判断
    if user_name=='爱听歌的阿漓' and pwd=='123456':
        print('正在登录,请稍后!')
        i=4
    else:
        if i<2:
            print('用户名和密码不正确,您还有',2-i,'次机会')
        i+=1
if i==3:
        print('不好意思,三次均输入错误')
请输入您的用户名:爱听歌的阿漓
请输入您的六位数密码:123456
正在登录,请稍后!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIl2TF5w-1670290067761)(attachment:image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0FK2x7Y-1670290067761)(attachment:image.png)]

三行四列长方形

for i in range(1,4):
    for j in range(1,5):
        print('*',end='')
    print() 
****
****
****

直角三角形

for i in range(1,6):
    for j in range(1,i+1):# 1-->1  2-->2
        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):# 1-->1  2-->3 3-->5 
        print('*',end='')
    print()
        
    *
   ***
  *****
 *******
*********
row=eval(input('请输入菱形的行数:'))
# 上半部分
top_row=(row+1)//2
while row%2==0:
    print('重新输入菱形的行数')
    row=eval(input('请输入菱形的行数:'))
    
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):# 1-->1  2-->3 3-->5 
        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='')
#         print()
    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()
请输入菱形的行数:7
   *
  * *
 *   *
*     *
 *   *
  * *
   *

跳转函数break

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W4XdzwPM-1670290067761)(attachment:image.png)]

sum=0
for i in range (1,100):
    sum+=i
    if sum>20:
        print(i)
        break
print(sum)
6
21
i=0
while i<3:
    user_name=input('请输入用户名:')
    pwd=input('请输入密码:')
    if user_name=='lyl' and pwd=='888888':
        print('系统正在登录,请稍后...')
        break # 直接退出循环
    else:
        if i<2:
            print('用户名或密码不正确,你还有',2-i,'次机会')
    i+=1
else:
    print('三次均输入错误!')
请输入用户名:lyl
请输入密码:888888
系统正在登录,请稍后...
user_name=input('请输入用户名:')
    pwd=input('请输入密码:')
    if user_name=='lyl' and pwd=='888888':
        print('系统正在登录,请稍后...')
        break # 直接退出循环
    else:
        if i<2:
            print('用户名或密码不正确,你还有',2-i,'次机会')
    i+=1
for i in range(0,3):
    user_name=input('请输入用户名:')
    pwd=input('请输入密码:')
    if user_name=='lyl' and pwd=='888888':
        print('系统正在登录,请稍后...')
        break # 直接退出循环
    else:
        if i<2:
            print('用户名或密码不正确,你还有',2-i,'次机会')
else:
    print('三次均输入错误')
    
请输入用户名:lyl
请输入密码:3
用户名或密码不正确,你还有 2 次机会
请输入用户名:3
请输入密码:3
用户名或密码不正确,你还有 1 次机会
请输入用户名:3
请输入密码:3
三次均输入错误
arr=[]
for i in "hello":
    arr.append(i)
print(arr)
['h', 'e', 'l', 'l', 'o']

程序跳转语句continue

# 计算1-100之间的偶数和
s=0
i=1
while i < 101:
    if i%2==1:
        i+=1        
        continue
    s+=i
    i+=1
print(s)
2550

实战一

# 判断所给出的年份是否为闰年
while True:
    year = eval(input('请输入一个年份:>'))
    if (year%4==0 and year %100!=0) or (year%400==0):
        print(year,'年是闰年')
    else:
        print(year,'年是平年')
请输入一个年份:>200
200 年是平年
请输入一个年份:>2000
2000 年是闰年



---------------------------------------------------------------------------

KeyboardInterrupt                         Traceback (most recent call last)

 in 
      1 # 判断所给出的年份是否为闰年
      2 while True:
----> 3     year = eval(input('请输入一个年份:>'))
      4     if (year%4==0 and year %100!=0) or (year%400==0):
      5         print(year,'年是闰年')


D:\Anaconda3\lib\site-packages\ipykernel\kernelbase.py in raw_input(self, prompt)
    858                 "raw_input was called, but this frontend does not support input requests."
    859             )
--> 860         return self._input_request(str(prompt),
    861             self._parent_ident,
    862             self._parent_header,


D:\Anaconda3\lib\site-packages\ipykernel\kernelbase.py in _input_request(self, prompt, ident, parent, password)
    902             except KeyboardInterrupt:
    903                 # re-raise KeyboardInterrupt, to truncate traceback
--> 904                 raise KeyboardInterrupt("Interrupted by user") from None
    905             except Exception as e:
    906                 self.log.warning("Invalid Message:", exc_info=True)


KeyboardInterrupt: Interrupted by user

实战二

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3gczIHYf-1670290067761)(attachment:image.png)]

while True:
    print('---------欢迎使用10086查询功能---------\n'+
      '1.查询当前余额\n'+
     '2.显示当前的剩余流量\n'+
     '3.显示当前剩余通话时长\n'+
     '0.退出系统')
    choose=eval(input('请输入您要执行的操作:'))

---------欢迎使用10086查询功能---------
1.查询当前余额
2.显示当前的剩余流量
3.显示当前剩余通话时长
0.退出系统



---------------------------------------------------------------------------

KeyboardInterrupt                         Traceback (most recent call last)

 in 
      5      '3.显示当前剩余通话时长\n'+
      6      '0.退出系统')
----> 7     choose=eval(input('请输入您要执行的操作:'))


D:\Anaconda3\lib\site-packages\ipykernel\kernelbase.py in raw_input(self, prompt)
    858                 "raw_input was called, but this frontend does not support input requests."
    859             )
--> 860         return self._input_request(str(prompt),
    861             self._parent_ident,
    862             self._parent_header,


D:\Anaconda3\lib\site-packages\ipykernel\kernelbase.py in _input_request(self, prompt, ident, parent, password)
    902             except KeyboardInterrupt:
    903                 # re-raise KeyboardInterrupt, to truncate traceback
--> 904                 raise KeyboardInterrupt("Interrupted by user") from None
    905             except Exception as e:
    906                 self.log.warning("Invalid Message:", exc_info=True)


KeyboardInterrupt: Interrupted by user
answer ='y'
while answer == 'y':
    print('---------欢迎使用10086查询功能---------\n'+
      '1.查询当前余额\n'+
     '2.显示当前的剩余流量\n'+
     '3.显示当前剩余通话时长\n'+
     '0.退出系统')
    choice=input('请输入您要执行的操作:')
    if choice=='1':
        print('当前余额为:234.5元')
    elif choice=='2':
        print('当前的剩余流量为4GB')
    elif choice=='3':
        print('当前剩余通话时长300分钟')
    elif choice=='0':
        print('退出')
        break
    else:
        print('输入有误!请重新输入~')
    answer=input('还要继续操作吗?y/n')
else:
    print('程序退出,谢谢您的使用')
---------欢迎使用10086查询功能---------
1.查询当前余额
2.显示当前的剩余流量
3.显示当前剩余通话时长
0.退出系统
请输入您要执行的操作:1
当前余额为:234.5元
还要继续操作吗?y/nn
程序退出,谢谢您的使用

实战三

# 输出9*9乘法口诀表
for i in range(1,10):
    for j in range(1,i+1):
        print(str(j)+'*'+str(i)+'='+str(i*j),end='  ')
    print()
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  
for i in range(1,10):
    for j in range(1,1+i):
        print('*',end='')
    print()
*
**
***
****
*****
******
*******
********
*********

实战四

import random
rand=random.randint(1,100)
count=1 # 记录猜的次数
while count<=3:
    number=eval(input('在我心中有个数(1-100)请你猜一猜:'))
    print('你还有'+str(3-count)+'次机会')    
    if number==rand:
        print('猜对了')
        break
    elif number>rand:
        print('猜大了')
        count+=1
        continue
    elif number<rand:
        print('猜小了')
        count+=1
        continue
    if count==3:
        print('您的次数已经用完')

你可能感兴趣的:(Python基础小记,python)