Python流程控制
六,输入输出
输入
还记得shell里的read吗
1 2 3 4 5 6 | [root@node1 python]# cat shell_read.sh #!/bin/bash read -p "input your name:" name read -p "input your age:" age echo "$name,you are $age old years" |
用python3中可以使用input()函数等待用户的输入(python2中为raw_input()函数)
示例
1 2 3 4 | name = input( "what is your name:" ) age = input( "what is your age: " ) print(name, "你" +age+ "岁了" ) |
注意:input输入都认为是str类型
输出
输出用print()
示例
1 2 3 4 5 | print ( "=" * 10 ) print ( "1-系统" ) print ( "2-数据库" ) print ( "3-quit" ) print ( "=" * 10 ) |
输出
1 2 3 4 5 | = = = = = = = = = = 1 - 系统 2 - 数据库 3 - quit = = = = = = = = = = |
格式化输出
还记得awk里的printf吗? (学过C基础的也肯定知道printf)
python里不用printf,但也可以用 % 表示格式化操作符
操作符 | 说明 |
%S | 字符串 |
%d | 整数 |
%f | 浮点数 |
%% | 输出% |
示例
1 2 3 4 | name = input ( "请输入你的名字:" ) age = input ( "请输入你的年龄:" ) age = int (age) print ( "%s,你%d岁了" % (name,age) ) |
下面是一种新的格式化输出的写法,不用纠结是写%是还是%d,至对应好顺序就行(0代表第一个,1代表第二个)
1 2 3 4 5 | name = input ( "请输入你的名字:" ) age = input ( "请输入你的年龄:" ) age = int (age) print ( "%s,你%d岁了" % (name,age) ) print ( "{},你{}岁了" . format (name,age)) |
默认{}内是按照顺序的,也可以手动指定顺序例如
1 2 3 4 5 6 | name = input ( "请输入你的名字:" ) age = input ( "请输入你的年龄:" ) age = int (age) print ( "%s,你%d岁了" % (name,age) ) print ( "{},你{}岁了" . format (name,age)) print ( "{1},你{0}岁了" . format (name,age)) |
输出
1 2 3 4 5 | 请输入你的名字:liuym 请输入你的年龄: 18 liuym,你 18 岁了 liuym,你 18 岁了 18 ,你liuym岁了 |
练习题
键盘输入一些信息然后输出
1 2 3 4 5 6 7 8 9 10 11 12 13 | name = input ( "请输入你的名字:" ) sex = input ( "请输入你的性别:" ) job = input ( "请输入你的工作:" ) phonenum = input ( "请输入你的电话:" ) info = ''' ------------ information of {} ----------- name: {} sex: {} job: {} phonenum: {} ''' . format (name, name, sex, job, phonenum) print (info) |
七,运算符
算数运算符
算数运算符 | 描述 | 实例 |
+ | 加法 | 1=2=3 |
- | 减法 | 5-1=4 |
* | 乘法 | 3*5=15 |
/ | 除法 | 10/2=5有余数结果为浮点数 |
// | 整除 | 10//3=3 |
** | 求幂 | 2**3=8 |
% | 取余 | 10%3=1 |
赋值运算符
赋值运算符 | 描述 | 实例 |
= | 简单的赋值运算符,下面全部为复合运算符 | c=a+b |
+= | 加法赋值运算符 | a+=b等同于a=a+b |
-= | 减法赋值运算符 | a-=b等同于a=a-b |
*= | 乘法赋值运算符 | a*=b等同于a=a*b |
/= | 除法赋值运算符 | a/=b等同于a=a/b |
//= | 整除赋值运算符 | a//=b等同于a=a//b |
**= | 求幂赋值运算符 | a**=b等同于a=a**b |
%= | 取余赋值运算符 | a%=b等同于a=a%b |
比较运算符
比较运算符 | 描述 | 示例 |
== | 等于 | print(1==1)返回True |
!= | 不等于 | print(2!=1) 返回True |
<> | 不等于同!= | print(2<>1) 返回True |
< | 小于 | print(2>1) 返回True |
> | 大于 | print(2<1) 返回False |
>= | 大于等于 | print(2>=1) 返回True |
<= | 小于等于 | print(2<=1) 返回False |
逻辑运算符
逻辑运算符 | 逻辑表达式 | 描述 |
and | x and y | x与y都为True,则返回True;x与y任一个或两个都为False,则返回False |
or | x or y | x与y任一个条件为True,则返回True |
not | not x | x为True,返回False; x为False,返回True |
成员运算符
在后面讲解和使用序列(str,list,tuple) 时,还会用到以下的运算符。
成员运算符 | 描述 |
in | x 在 y 序列中 , 如果 x 在 y 序列中返回 True; 反之,返回False |
not in | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True; 反之,返回False |
身份运算符
身份运算符 | 描述 | 实例 |
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似id(x) == id(y) , 如果是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y ,类似id(a) != id(b)。如果不是同一个对象则返回结果 True,否则返回 False。 |
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一个内存空间), == 用于判断引用变量的值是否相等。
1 2 3 4 5 6 7 8 9 10 | a = [ 1 , 2 , 3 ] b = a[:] c = a print (a, id (a)) print (b, id (b)) print (c, id (c)) print (b is a) print (b = = a) print (c is a) print (c = = a) |
输出
1 2 3 4 5 6 7 | [ 1 , 2 , 3 ] 2849709901960 [ 1 , 2 , 3 ] 2849709923400 [ 1 , 2 , 3 ] 2849709901960 False True True True |
a与c在同一个内存空间 b只是等于a 但是与a不在同一个内存空间
位运算符
这里的python位运算符也是用于操作二进制的。
位运算符 | 说明 |
& | 对应二进制位两个都为1,结果为1 |
| | 对应二进制位两个有一个1, 结果为1, 两个都为0才为0 |
^ | 对应二进制位两个不一样才为1,否则为0 |
>> | 去除二进制位最右边的位,正数上面补0, 负数上面补1 |
<< | 去除二进制位最左边的位,右边补0 |
~ | 二进制位,原为1的变成0, 原为0变成1 |
运算符的优先级
常用的运算符中: 算术> 比较> 逻辑> 赋值
示例:请问下面的结果是什么?
1 2 | result = 3 - 4 > = 0 and 4 * ( 6 - 2 ) > 15 print (result) |
结果是false
算数优先级最高优先计算3 - 4 = -1 4*(6-2)=16
再计算比较-1 是小于等于0的 16是大于15的
在计算逻辑 False and True结果为False
最后赋值 使用结果为False
八,判断语句
shell里的判断语句格式
1 2 3 | if 条件;then 执行动作一 fi |
示例
1 | if [ 1 = = 1 ];then echo 1 ;fi |
shell双分支判断语句
1 2 3 4 5 | if 条件;then 执行动作一 else 执行动作二 fi |
示例
1 | if [ 1 = = 2 ];then echo 1 ; else echo 2 ;fi |
shell多分支判断语句
1 2 3 4 5 6 7 8 9 | if 条件一;then 执行动作一 elif 条件二;then 执行动作二 elif 条件三;then 执行动作三 else 执行动作四 fi |
或者
1 2 3 4 5 6 7 8 | case 变量 in 值一) 动作一;; 值二) 动作二;; * ) 其他动作 esac |
python里的判断语句格式
python单分支判断语句
1 2 3 | if 条件: #结束加: 执行动作 #一定要缩进否则语法报错 #没有fi结束符,就是看缩进 |
示例
1 2 | if 1 == 1: print( "True" ) |
python多分支判断语句
1 2 3 4 5 6 7 8 | if 条件一: 执行动作一 elif 条件二: 执行条件二 elif 条件三: 执行动作三 else : 执行动作四 |
示例
1 2 3 4 5 6 7 | str1 = input( "输入yes/no:" ) if str1 == "yes" : print( "True" ) elif str1 == "no" : print( "Flase" ) else : print( "Error" ) |
示例:通过年龄判断对一个人的称呼
男的大于18叫sir
男的小于18叫boy
女的大于18叫lady
女的小于18叫girl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | name = input( "请输入姓名:" ) sex = input( "请输入性别man/women:" ) age = int (input( "请输入年龄:" )) if sex == "man" : if age >= 18: print( "hello {} sir" .format(name)) else : print( "hello {} boy" .format(name)) elif sex == "women" : if age >= 18: print( "hello {} lady" .format(name)) else : print( "hello girl" .format(name)) else : print( "输入有误" ) |
if嵌套
if嵌套也就是if里还有if,你可以无限嵌套下去,但层次不宜过多(嵌套层次过多的话程序逻辑很难读,也说明你的程序思路不太好,应该有很好的流程思路来实现)
九,循环语句
while循环
1 2 3 4 | while 条件: 条件满足时候:执行动作一 条件满足时候:执行动作二 ...... |
1 2 3 | continue #跳出本次循环 break #退出循环,执行循环外代码 exit() #退出python程序,可以指定返回值 |
打印1-10
1 2 3 4 | i = 1 while i <= 100: print(i, end= " " ) i += 1 |
示例
计算1-100偶数之和
1-100偶数之和.py
1 2 3 4 5 6 7 | i = 0 j = 0 while i <= 100: if i % 2 == 0: j = j + i i += 1 print(j) |
猜数字
1 2 3 4 5 6 7 8 9 10 11 12 13 | import random num = random.randint(1, 100) while True: g_num = int (input( "请输入你猜想的数字1-100" )) if g_num > num: print( "大了" ) continue elif g_num < num: print( "小了" ) continue else : print( "对了 {}" .format(num)) break |
for循环
for循环遍历一个对象(比如数据序列,字符串,列表,元组等),根据遍历的个数来确定循环次数。
for循环可以看作为定循环,while循环可以看作不定循环
for循环的基本格式
1 2 3 | for 变量 in 数据: 重复执行的代码 |
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #for循环一个元组 for i in (1, 2, 3, 4, 5): print(i, end= " " ) #循环range函数这里表示 1 2 3 4 5不包含6 for i in range(1,6): print(i) #循环0 1 2 3 4 5不包含6 for i in range(6): print(i) #循环奇数,步长为2 for i in range(1, 100, 2): print(i) #循环从100-1 步长为-2即从100降序打印偶数 for i in range(100, 1, -2): print(i) |
示例
使用for循环来实现1-100之间能被5和3同时整除的数字之和
1 2 3 4 5 | sum = 0 for i in range(1,101): if i % 5 == 0 and i % 3 == 0: sum += i print(sum) |
练习:改写猜数字游戏,最多5次,5次没有猜对就退出
方法一:使用while
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import random Num = random.randint(1, 100) j = 0 while True: GuessNum = int (input( "请输入你猜想的数字1-100" )) if GuessNum > Num and j < 5: j += 1 print( "大了,已经猜{}次了" .format(j)) continue elif GuessNum < Num and j < 5: j += 1 print( "小了,已经猜{}次了" .format(j)) continue elif GuessNum == Num and j < 5: j += 1 print( "对了数字是{}你猜了{}次" .format(GuessNum, j)) break elif j >= 5: print( "次数用完了数字是{}" .format(Num)) break |
方法二:使用for循环
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import random Num = random.randint( 1 , 100 ) for i in range ( 1 , 6 ): GuessNum = int ( input ( "请输入你猜想的数字1-100" )) if GuessNum > Num: print ( "大了,已经猜{}次了" . format (i)) elif GuessNum < Num: print ( "小了,已经猜{}次了" . format (i)) else : print ( "对了,一共猜了{}次数字是{}" . format (i, Num)) break if i = = 5 : print ( "五次机会用完了" ) exit() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-10-13 Redhat7.5安装glusterfs4