python小记3
创始人
2024-03-21 20:08:30
0

本节需要了解:

  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 的余数为0print(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或Falseprint('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,否则将'很遗憾,大奖与您擦肩而过!'赋值给resultnumber=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%10tens=i//10%10hundred=i//100if 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=4else: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-->2print('*',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+=iif 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        continues+=ii+=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 None905             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 None905             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('退出')breakelse: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('猜对了')breakelif number>rand:print('猜大了')count+=1continueelif number

相关内容

热门资讯

律师进阶:直面对金钱的喜爱 律师这个职业,已经从光鲜亮丽的精英群体逐步走向了平常职业。但是想要做好律师,难度却一点也没减少。 律...
公安部有关部门下发通知要求 依... 本报北京12月26日讯 记者张晨 2026年元旦、春节将至,节令食品和假期餐饮进入消费高峰期。为切实...
重庆建工集团股份有限公司 关于... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
产能闲置vs退役潮来袭:动力电... 来源:财联社 中国新能源汽车市场连续多年的高速增长,正将动力电池回收产业推至一个关键的十字路口。 财...
*ST建艺[002789]关于... 本版导读 2025-12-27 2025-12-27 2025-12-27 2025...
诺普信定增与减持并行 年内诉讼... 【深圳商报讯】(记者 詹钰叶)深圳诺普信作物科学股份有限公司(下称诺普信)最近连发两条关于实际控制人...
释新闻|美国在公海扣押委内瑞拉... 继在加勒比海域集结大批军力并对涉嫌运送毒品的船只进行打击之后,特朗普如今又把目标对准了油轮。自12月...
亿晶光电科技股份有限公司关于累... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
重庆四方新材股份有限公司 关于... 证券代码:605122 证券简称:四方新材 公告编号:2025-080 重庆四方新材股份有限公司 关...
深圳市建艺装饰集团股份有限公司... ■ 深圳市建艺装饰集团股份有限公司 关于诉讼的进展公告 本公司及董事会全体成员保证信息披露的内容真实...