目录
顺序结构
输入
input()
输出
print()
格式化输出
%
format
f 表达式
选择结构
条件表达式
关系运算符
逻辑运算符
选择结构
单分支选择结构
多分支选择结构
循环结构
for…in…
while
range()
else:
elif:
break、contiune
程序的异常处理
try....except...else
顺序结构
输入
input()
input()
str=input("可输入输出内容提示信息") 返回字符串类型数据
Servant=input() print(type(Servant))
少女前线进程已结束,退出代码0
注意:
不能在一行赋值语句中同时给多个变量赋值
x=10,y=12(x)
输出
print()
print(value,sep='',end='' ,file=sys.stdout,flush=)
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填充空白处
%
- 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]
【宽度】.【精度】
- 设置字段的最小占位宽度,默认右对齐,内容不够时使用空格填充
- 转换标志:
- -表示左对齐;
- +表示在转换值之前显示正负号;
- “(空格)”表示正数之前保留空格(对负数貌似没用);
- 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
注意:
- 如果有“-”标志将覆盖“0”标志
- 当前字符宽度超过限定宽度按实际输出
- 不可以将可变列表作为变量填入
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
注意:
- 其实位置参数和关键字参数可以混用,但是混合使用时,必须将 位置参数 写到前面,关键字参数 不用按照顺序来指定。
{}里面不能填中文,差评,好评,记得中文不要加引号,计算机会自动加- 对于关键词参数,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:
- < 强制左对齐(绝大多数对象默认使用)
- > 强制右对齐(数字类型默认使用)
- = 强制将填充内容放在符号(如果有)之后但数字之前,比如输出成+000000120这样的格式。此对齐选项仅对数字类型有效。(当’0’紧接在字段宽度width之前时,它将成为默认值。)
- ^ 强制居中对齐
- sign: 符号展现格式(仅对数字类型有效)
- + 正数负数都展现符号,正数用+,负数用-。
- - (默认值),仅负数展现符号。
- ‘(空格)’负数展现符号,正数前面使用一个空格来占位对齐。
print("404小队成员:{0[钢板]:-d},{0[莱娜]:+d},{0[家里蹲]: d}".format({'钢板':-1,'莱娜':2,'小怪兽':-3,'家里蹲':4}))
404小队成员:-1,2,-3, 4
- precision: 精度
- 指定时要用.来开头,是一个十进制数,指定用’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: 分组选择
- , 表示使用逗号作为千位分隔符。
- _ 复杂生僻,基本不使用,不介绍.
f 表达式
{f_expression[=][!conversion][:format_spec]}
- f_expression:
必填内容,常规Python表达式,一般要被圆括号包围
注意事项:
- 不允许使用空表达式。
- lambda和赋值表达式:=必须用显式括号括起来。
- =: 选填(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
格式: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语句(除非在处理异常时又引发新的异常)。



