栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

python控制结构(课本总结)

Python 更新时间:发布时间: 百科书网 趣学号

目录

顺序结构

输入

input()

输出

格式化输出

%

format

 f 表达式

选择结构

条件表达式

关系运算符

逻辑运算符

选择结构

单分支选择结构

多分支选择结构

循环结构

for…in…

while

range()

 else:

 elif:

break、contiune

程序的异常处理

try....except...else

顺序结构

输入

input()

str=input("可输入输出内容提示信息")    返回字符串类型数据

Servant=input()
print(type(Servant))
少女前线


进程已结束,退出代码0

注意:

        不能在一行赋值语句中同时给多个变量赋值

        x=10,y=12(x)

输出

print()
print(value,sep='',end='' ,file=sys.stdout,flush=)

参数

  • objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
  • sep -- 用来间隔多个对象,默认值是一个空格。
  • end -- 用来设定以什么结尾。默认值是换行符 n,我们可以换成其他字符串。
  • file -- 要写入的文件对象,默认代表系统标准输出,即屏幕
  • flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。

sep可选关键字参数

sep参数可以在值之间插入字符串,默认值为空格。

import time
print("---RUNOOB EXAMPLE : Loading 效果---")
print("Loading",end = "")
for i in range(20):
    print(".")
---RUNOOB EXAMPLE : Loading 效果---
Loading.
.
.
.
进程已结束,退出代码0

file参数

默认值为sys.stdout,代表系统标准输出,即屏幕。我们可以通过改变该参数使print()函数输出到特定的文件中。

import time
f = open(r"text.txt",'w') # 打开文件,以便写入
print("---RUNOOB EXAMPLE : Loading 效果---")
print("Loading",end = "",file=f)
for i in range(20):
    print(".",file=f)
f.close()

end可选关键字参数

end参数默认为"n"(换行符),如果想在print()函数输出之后输出别的字符串,可以重设end参数。

import time
print("---RUNOOB EXAMPLE : Loading 效果---")
print("Loading",end = "")
for i in range(20):
    print(".",end = '')

---RUNOOB EXAMPLE : Loading 效果---
Loading....................
进程已结束,退出代码0

flush可选关键字参数

flush参数用于控制输出缓存,一般为了可以获得较好的性能,保持为False即可。

import time
print("---RUNOOB EXAMPLE : Loading 效果---")
print("Loading",end = "")
for i in range(20):
    print(".",end = '',flush = True)
    time.sleep(0.5)
---RUNOOB EXAMPLE : Loading 效果---
Loading....
Loading........
Loading...........
Loading..............
Loading....................(动态过程,不是重复输出)
进程已结束,退出代码0

格式化输出
  • s : 获取传入对象的__str__方法的返回值,并将其格式化到指定位置
  • r : 获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
  • c : 整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
  • o : 将整数转换成 八  进制表示,并将其格式化到指定位置
  • x : 将整数转换成十六进制表示,并将其格式化到指定位置
  • d : 将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
  • e (E): 将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e/大写E)
  • f(F) :  将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
  • g : 自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
  • G : 自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
  • % : 当字符串中存在格式化标志时,需要用 %%表示一个百分号;
  • +       右对齐;正数前加正好,负数前加负号;
  • -       左对齐;正数前无符号,负数前加负号;
  • '空格'     右对齐;正数前加空格,负数前加负号;
  • 0       右对齐;正数前无符号,负数前加负号;用0填充空白处

%

"... %[key][flags][width][.precision][length type][conversion type] ..." % values

  • %: 必须要有的符号,它标记占位符的开始。
  • key: 选填。映射的键,由带括号的字符序列组成,一般用于后面的values是是字典的场景。
  • flags: 选填。转换标志(Conversion flags), 会影响某些转换类型的结果。
  • width: 选填。最小字段宽度。如果指定为“*”(星号),则实际宽度从值中元组的下一个元素读取,要转换的对象位于最小字段宽度和可选精度之后。
  • precision: 选填。精度,写法为.precision(点+精度)。如果指定为“*”(星号),则实际宽度从值中元组的下一个元素读取,要转换的值位于精度之后。
  • length type: 选填。长度修改器。
  • Conversion type: 必须要有的符号。转换类型,也标记占位符的开始。

Conversion type
由于这个字段是必选字段,所以最先介绍(%写法是固定的,Conversion type则必须要选择一个转换类型)

x=input("强大的战斗力、冷静的思维、丰富的经验与酒鬼妹控的形象以及叛变后所展现出更恐怖的战斗力,那么她是谁:")
print("拖尸王:%s"%x)
强大的战斗力、冷静的思维、丰富的经验与酒鬼妹控的形象以及叛变后所展现出更恐怖的战斗力,那么她是谁:M16
拖尸王:M16

进程已结束,退出代码0

key (不常用)
选填字段是搭配{字典格式的values使用的

x=input("少女前线是一款怎样的游戏:")
print("羽中曾曰:“少女前线是一个充满%(爱与希望)s的游戏”"% {"爱与希望":x})
少女前线是一款怎样的游戏:充斥着各种现实主义且十分悲痛的情节
羽中曾曰:“少女前线是一个充满充斥着各种现实主义且十分悲痛的情节的游戏”

进程已结束,退出代码0

flags (不常用)

  • 0    数值的转换将被零填充,需搭配width使用(示例见下面的width中的)。
  • -    转化结果左对齐,需搭配width使用(示例见下面的width中的), 该标志符会覆盖0标志符。
  • 空格 在带符号的转换产生的正数(或空字符串), 之前留一个空格(方便正负数最后对齐)。
  • +    转换数字后,数字前面将会展示其正负号(“+”或“-”), 如果原输出数字存在正负号则该标志符会被覆盖。
x="少女前线"
for i in x:
    y=ord(i)
    print("%+d"%y,end="")
+23569+22899+21069+32447
进程已结束,退出代码0

[width][.precision]

【宽度】.【精度】

  • 设置字段的最小占位宽度,默认右对齐,内容不够时使用空格填充
  • 转换标志:
  1. -表示左对齐;
  2. +表示在转换值之前显示正负号;
  3. “(空格)”表示正数之前保留空格(对负数貌似没用);
  4. 0表示转换值若位数不够则用0填空。
  • 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从后边元组中读出
  • (.)后是精度值:如果转换的是实数,精度值就表示出现在小数点后的位数,如果*,那么精度将从后边元组中读出。如果转换的是字符串,那么该数字就表示最大字符串宽度。
x="少女前线"
list1=[]
for i in x:
    y=ord(i)
    print(type(y))
    list1.append(y)
list1.append(1001.0)
list1=tuple(list1)
print("%15.5f,%f,%-015.5f,%-15.5f,%015.5f"%list1)
print("t%*.*f"%(5,5,100))
    23569.00000,22899.000000,21069.00000    ,32447.00000    ,000001001.00000
	100.00000

注意: 

  1. 如果有“-”标志将覆盖“0”标志
  2. 当前字符宽度超过限定宽度按实际输出
  3. 不可以将可变列表作为变量填入

length type (使用方式未知)

format

"... {[field_name][!conversion][:format_spec]} ...".format(arguments)
arguments
位置参数(Positional Arguments)

print("AR小队成员:{},{},{},{},{}".format("M4A1","M4 SOPMODⅡ",'AR15',"M16A1","RO635"))
print("AR小队成员:{4},{3},{2},{1},{0}".format("M4A1","M4 SOPMODⅡ",'AR15',"M16A1","RO635"))
AR小队成员:M4A1,M4 SOPMODⅡ,AR15,M16A1,RO635
AR小队成员:RO635,M16A1,AR15,M4 SOPMODⅡ,M4A1
进程已结束,退出代码0

注意: 

        对于位置参数,arg_name必须为序号(此时该字段可不填,不填则默认第一个为0,从前往后依次+1),两者效果一样。

关键字参数(Keyword Arguments)

print("AR小队成员:{小公主},{狗子},{自爆卡车},{十六鸽},{喇叭}".format(小公主='M4A1',狗子='M4 SOPMODⅡ',自爆卡车='AR15',十六鸽='M16A1',喇叭='RO635'))
AR小队成员:M4A1,M4 SOPMODⅡ,AR15,M16A1,RO635

注意:

  1. 其实位置参数和关键字参数可以混用,但是混合使用时,必须将 位置参数 写到前面,关键字参数 不用按照顺序来指定。
  2. {}里面不能填中文,差评,好评,记得中文不要加引号,计算机会自动加
  3. 对于关键词参数,arg_name必须为其中的关键字,(此时该字段是必填项)


拓展:

该字段完整语法格式为arg_name(.attribute_name | [element_index])*,是在arg_name对应的值为对象、列表或字典时使用,获取其进一步的属性值或者内部值。

print("AR小队成员:{0[小公主]},{0[狗子]},{0[自爆卡车]},{0[十六鸽]},{0[喇叭]}".format({'小公主':'M4A1','狗子':'M4 SOPMODⅡ','自爆卡车':'AR15','十六鸽':'M16A1','喇叭':'RO635'}))

(更多总结,日后再更)

!conversion  

指定时要用!来开头,指定后会在格式化之前将arguments中对应的值进行类型变换。

conversion说明示例
s对结果调用str()方法
1name='M4 SOPMOD II'
print(f"格里芬战犬 is {name!s}.")
格里芬战犬 is M4 SOPMOD II.
r对结果调用repr()方法
1name='M4 SOPMOD II'
print(f"格里芬战犬 is {name!r}.")
格里芬战犬 is 'M4 SOPMOD II'.(多了引号)
a对结果调用ascii()方法
name='åM4 SOPMOD IIå'
print(f"格里芬战犬 is {name!a}.")

格里芬战犬 is 'xe5M4 SOPMOD IIxe5'.

(会使用转义序列 (x, u , U) 来表示其中的非 ASCII码字符)

(暂时不清楚有什么用,以后开发)

[format_spec]

[[fill]:align][sign][#][0][width][grouping_option][.precision][type]

  • fill: 填充内容,如果指定了宽度,但变量长度不够,会使用该字段值进行填充。(设置了fill,后面必须显式设置align。)
  • align: 
  1. <    强制左对齐(绝大多数对象默认使用)
  2. >    强制右对齐(数字类型默认使用)
  3. =    强制将填充内容放在符号(如果有)之后但数字之前,比如输出成+000000120这样的格式。此对齐选项仅对数字类型有效。(当’0’紧接在字段宽度width之前时,它将成为默认值。)
  4. ^    强制居中对齐
  • sign: 符号展现格式(仅对数字类型有效)
  1. +    正数负数都展现符号,正数用+,负数用-。
  2. -    (默认值),仅负数展现符号。
  3. ‘(空格)’负数展现符号,正数前面使用一个空格来占位对齐。
print("404小队成员:{0[钢板]:-d},{0[莱娜]:+d},{0[家里蹲]: d}".format({'钢板':-1,'莱娜':2,'小怪兽':-3,'家里蹲':4}))
404小队成员:-1,2,-3, 4
  •  precision: 精度
  1. 指定时要用.来开头,是一个十进制数,指定用’f’和’f’格式化的浮点值在小数点后应该显示多少位,即保留几位小数。
  • width: 最小字段宽度,不设置则字段宽度将始终与填充它的数据长度相同(此时对齐方式align没有意义)。 fill, align只有设置了width才能生效。
  • type: 类型,决定数据应该如何显示。(上面类似)
print("404小队成员:{0[钢板]:10s},{0[莱娜]:<10s},{0[小怪兽]:>10s},{0[家里蹲]:^10s}".format({'钢板':"UMP45 ",'莱娜':'UMP9','小怪兽':'HK416','家里蹲':'G11'}))
404小队成员:UMP45     ,UMP9      ,     HK416,   G11 
  • #: 复杂生僻,基本不使用,不介绍,有需要的可查阅官方文档(见本部分开头)
  • 0: 当没有设置对齐方式align时, 在宽度字段前面加一个零(‘0’)字符,将等价于填充字符fill为0且对齐方式align为<。
print("404小队成员:{0[钢板]:+05d},{0[莱娜]:w<-5d},{0[小怪兽]: d},{0[家里蹲]: d}".format({'钢板':-1,'莱娜':2,'小怪兽':-3,'家里蹲':4}))
404小队成员:-0001,2wwww,-3, 4
  • grouping_option: 分组选择
  1. ,    表示使用逗号作为千位分隔符。
  2. _    复杂生僻,基本不使用,不介绍.

 f 表达式

{f_expression[=][!conversion][:format_spec]}

  • f_expression:

必填内容,常规Python表达式,一般要被圆括号包围

注意事项:

  1. 不允许使用空表达式。
  2. lambda和赋值表达式:=必须用显式括号括起来。
  3. =: 选填(3.8新版功能), 在表达式后添加等号’=’, 可以显示表达式文本及其求值后的值(在调试中很有用),。
  • !conversion:

(跟之前一模一样)

  • format_spec:

嵌套使用replacement_field指定其中的值。

value=644.751113151
width=12
precision=5
print(f"result: {value:{width}.{precision}}")

选择结构

条件表达式


注意:

在条件表达式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价。
 

关系运算符
renxin=input()
if renxin+"兵蚁"=="RO635兵蚁":
    print("我死了算了")
RO635
我死了算了

进程已结束,退出代码0

注意:

条件表达式中不允许使用赋值运算符“=”,避免了误将关系运算符“==”写作赋值运算符“=”带来的麻烦。在条件表达式中使用赋值运算符“=”将抛出异常,提示语法错误。

逻辑运算符

逻辑运算符and、or、not分别表示逻辑与、逻辑或、逻辑非。对于and而言,必须两侧的表达式都等价于True,整个表达式才等价于True。

(想东西好累,我死了算了,不过还是得写)
game=input().split()
if game==["少女前线","药丸"]:
    print("正解")
少女前线 药丸
正解
少女前线 药丸
正解

注意:

逻辑运算符and和or具有短路求值或惰性求值的特点,可能不会对所有表达式进行求值,而是只计算必须计算的表达式的值。

选择结构

单分支选择结构
if Ture:
    print("坚持少前药丸方针不动摇")

P三元运算符,并且在三元运算符构成的表达式中还可以嵌套三元运算符,可以实现与选择结构相似的效果。

语法:

当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。

value1 if condition else value2
print("少前药丸" if '地球都是圆的'else'少前要火')
少前药丸

多分支选择结构
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
else:
语句块4

循环结构

for…in…
格式:for 参数 in 循环体:
          pass
x="找·到·你·了·哦!"
for i in x:
    print(i,end="")
找·到·你·了·哦!
找·到·你·了·哦!

while

while要先将循环变量初始化或者直接使用while True 这种死循环形式。

格式:while True:
        pass
y='蹦!蹦!蹦——!全部破坏掉!哈哈哈哈哈!'
while y:
    if len(y)==1:
        print(y)
        y=list(y)
        y.clear()
    else:
        print(y[0],end="")
        y=y[1:]
蹦!蹦!蹦——!全部破坏掉!哈哈哈哈哈!


range()

range(start,stop,step) (结尾的参数为stop-1)

z="诶哈哈哈,狂欢节开始啦开始啦!"
for i in range(0,len(z)):
    print(z[i],end="")
诶哈哈哈,狂欢节开始啦开始啦!


 else:

(一)上述格式中,如果if后面的条件成立(即为Ture)则运行pass1语句。条件不成立(即为flase),则运行else后面的pass2语句。

格式:if 条件:
        pass1
    else:
        pass2

(二)While正常结束(表达式为False)或for正常循环结束时跳为执行else:

p="少女前线"
list1=[]
T=True
while T:
    for i in p:
        list1.append(ord(i))
    else:
        print(list1)
        T=False
else:
    list2=[chr(i) for i in list1]
    print(list2)
[23569, 22899, 21069, 32447]
['少', '女', '前', '线']


 elif:

当出现的判断条件较多,我们需要进行较为精准的判断时,我们就需要使用elif来实现了。#并列(拥有先后顺序)

格式:if 条件判断1:
         <执行1>
     elif 条件判断2:
         <执行2>
     elif 条件判断3:
         <执行3>
     else:
         <执行4>

 


上述判断条件的执行顺序是:那个条件判断成立就执行那个后面的执行语句。若均不成立,这执行else后面的执行语句。

if gailu<0.01:
    print('您获得的人形是:IDW喵哒')
elif gailu<0.6:
    print('您获得的人形是:MP5')
elif gailu>0.2:
    print('无')
elif gailu<0.99:
    print('啥都没有')
else:
    print("您获得的人形是:P90")
重建
0.17958336080892
您获得的人形是:MP5

break、contiune

        break
        break的意思是:结束当前循环。

        continue
        意思为结束当前循环进入下一个循环

程序的异常处理

try....except...else

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

try:
<语句>        #运行别的代码
except <名字>:
<语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生
  • 如果在try子句执行时没有发生异常,将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
  • 如果当try后的语句执行时发生异常,就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/925513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号