
目录
顺序结构
输入
input()
输出
print()
格式化输出
%
format
f 表达式
选择结构
条件表达式
关系运算符
逻辑运算符
选择结构
单分支选择结构
多分支选择结构
循环结构
for…in…
while
range()
else:
elif:
break、contiune
程序的异常处理
try....except...else
str=input("可输入输出内容提示信息") 返回字符串类型数据
Servant=input() print(type(Servant))
少女前线进程已结束,退出代码0
注意:
不能在一行赋值语句中同时给多个变量赋值
x=10,y=12(x)
print(value,sep='',end='' ,file=sys.stdout,flush=)
参数
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
Conversion type
由于这个字段是必选字段,所以最先介绍(%写法是固定的,Conversion type则必须要选择一个转换类型)
x=input("强大的战斗力、冷静的思维、丰富的经验与酒鬼妹控的形象以及叛变后所展现出更恐怖的战斗力,那么她是谁:")
print("拖尸王:%s"%x)
强大的战斗力、冷静的思维、丰富的经验与酒鬼妹控的形象以及叛变后所展现出更恐怖的战斗力,那么她是谁:M16 拖尸王:M16 进程已结束,退出代码0
key (不常用)
选填字段是搭配{字典格式的values使用的
x=input("少女前线是一款怎样的游戏:")
print("羽中曾曰:“少女前线是一个充满%(爱与希望)s的游戏”"% {"爱与希望":x})
少女前线是一款怎样的游戏:充斥着各种现实主义且十分悲痛的情节 羽中曾曰:“少女前线是一个充满充斥着各种现实主义且十分悲痛的情节的游戏” 进程已结束,退出代码0
flags (不常用)
x="少女前线"
for i in x:
y=ord(i)
print("%+d"%y,end="")
+23569+22899+21069+32447 进程已结束,退出代码0
[width][.precision]
【宽度】.【精度】
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
注意:
length type (使用方式未知)
"... {[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(.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]
print("404小队成员:{0[钢板]:-d},{0[莱娜]:+d},{0[家里蹲]: d}".format({'钢板':-1,'莱娜':2,'小怪兽':-3,'家里蹲':4}))
404小队成员:-1,2,-3, 4
print("404小队成员:{0[钢板]:10s},{0[莱娜]:<10s},{0[小怪兽]:>10s},{0[家里蹲]:^10s}".format({'钢板':"UMP45 ",'莱娜':'UMP9','小怪兽':'HK416','家里蹲':'G11'}))
404小队成员:UMP45 ,UMP9 , HK416, G11
print("404小队成员:{0[钢板]:+05d},{0[莱娜]:w<-5d},{0[小怪兽]: d},{0[家里蹲]: d}".format({'钢板':-1,'莱娜':2,'小怪兽':-3,'家里蹲':4}))
404小队成员:-0001,2wwww,-3, 4
{f_expression[=][!conversion][:format_spec]}
必填内容,常规Python表达式,一般要被圆括号包围
注意事项:
(跟之前一模一样)
嵌套使用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 循环体: pass
x="找·到·你·了·哦!"
for i in x:
print(i,end="")
找·到·你·了·哦!
找·到·你·了·哦!
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(start,stop,step) (结尾的参数为stop-1)
z="诶哈哈哈,狂欢节开始啦开始啦!"
for i in range(0,len(z)):
print(z[i],end="")
诶哈哈哈,狂欢节开始啦开始啦!
(一)上述格式中,如果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来实现了。#并列(拥有先后顺序)
格式: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
break的意思是:结束当前循环。
continue
意思为结束当前循环进入下一个循环
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生