格式化输出
现在有个需要我们录入我们身边好友的信息,格式如下:
------------ info of Alex Li ----------
Name : Alex Li
Age : 22
job : Teacher
Hobbie: girl
------------- end ----------------
我们现在能想到的办法就是用一下方法:
name = input('请输入姓名:')
age = input('请输入年龄:')
job = input('请输入职业:')
hobby = input('请输入爱好:')
a = '------------ info of Alex Li ----------'
b = 'Name:'
c = 'Age:'
d = 'Job:'
e = 'Hobby:'
f = '------------- end ----------------'
print(a+
'\n'+
b+
name+
'\n'+
c+
age+
'\n'+
d+
job+
'\n'+
e+
hobby+
'\n'+
f)
# 运行结果
------------ info of Alex Li ----------
Name:meet
Age:18
Job:it
Hobby:3
------------- end ----------------
这样写完全没有问题,但是会不会比较繁琐呢,有些大佬肯定会想这不都实现了吗,还逼叨逼什么啊,那是没有体验过格式化输出有多霸道,我们现在来体验下霸道的姿势
name = input('请输入姓名:')
age = input('请输入年龄:')
job = input('请输入职业:')
hobby = input('请输入爱好:')
msg = '''
------------ info of Alex Li ----------
Name : %s
Age : %s
job : %s
Hobbie: %s
------------- end ----------------
'''
print(msg%(name,age,job,hobby))
我们但从代码的数量来看,这样就比那样的少,看到这里有细心的老铁们肯定在想%s这是啥玩意?
% 是一个占位, 回想下我们小时候给朋友占位子的场景,是的这个就是占位.那s又是什么呢? s代码的字符串类型;
具体详细参数如下,大家可以参考一下
|
%c |
转换成字符(ASCII 码值,或者长度为一的字符串) |
|
%r |
优先用repr()函数进行字符串转换 |
|
%s |
优先用str()函数进行字符串转换 |
|
%d / %i |
转成有符号十进制数 |
|
%u |
转成无符号十进制数 |
|
%o |
转成无符号八进制数 |
|
%x / %X |
转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写) |
|
%e / %E |
转成科学计数法(e / E控制输出e / E) |
|
%f / %F |
转成浮点数(小数部分自然截断) |
|
%g / %G |
%e和%f / %E和%F 的简写 |
|
%% |
输出% (格式化字符串里面包括百分号,那么必须使用%%) |
%s格式化示例:
name = input('>>>')
s = '1234%s'%name
print(s)
结果:
>>>88
1234'88'
%r格式化示例:
name = input('>>>')
s = '1234%r'%name
print(s)
结果:
>>>88
1234'88'
# 注意看我们输入的88 用%r格式化后会有引号,这是因为调用了我们内置的repr方法
repr这个方法是让编程人员快速分辨数据类型的方法
%d|%i格式化示例:
name = input('>>>')
s1 = '1234%d'%int(name)
s2 = '1234%i'%int(name)
print(s1)
print(s2)
结果:
>>>89
123489
123489
# %d和%i这种格式化只能用数字来填补占位
%%格式化示例:
num = input('>>>')
s= '目前学习进度:%s%%'%num
print(s)
结果:
>>>80
目前学习进度:80%
# 如果我们字符串中想要显示单独的%就需要用来个%%来转义,不然程序会认为那是一个占位
%c格式化示例:
name = input('>>>')
s = '1234%c'%name
print(s)
结果:
>>>5
12345
# 注意点是 %c这个只支持一位数的格式化
%u格式化示例:
name = input('>>>')
s1 = '1234%u'%int(name)
print(s1)
结果:
>>>88
123488
%o格式化示例:
name = input('>>>')
s1 = '1234%o'%int(name)
print(s1)
结果:
>>>444
1234674
# 注意看我输入的444但是却不是444因为这样给转换成了8进制的数
%x|%X格式化示例:
name = input('>>>')
s1 = '1234%x'%int(name)
s2 = '1234%X'%int(name)
print(s1)
print(s2)
结果:
>>>78
12344e
12344E
%e|%E格式化示例:
name = input('>>>')
s1 = '1234%e'%int(name)
s2 = '1234%E'%int(name)
print(s1)
print(s2)
结果:
>>>7777
12347.777000e+03
12347.777000E+03
%f|%F格式化示例:
name = input('>>>')
s1 = '1234%F'%int(name)
s2 = '1234%f'%int(name)
print(s1)
print(s2)
结果:
>>>45
123445.000000
123445.000000
while 循环
在生活中,我们遇到过循环的事情吧?比如循环听歌。在程序中,也是存才的,这就是流程控制语句 while
1、基本循环
|
1
2
3
4
5
6
|
while 条件:
# 循环体
# 如果条件为真,那么循环则执行
# 如果条件为假,那么循环不执行
|
练习
使用while循环求出1-100所有数的和
输出 1- 100内的所有奇数
输出 1- 100内所有的偶数
2、break
break 用于退出当层循环
|
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/env python#-*- coding:utf-8 -*-num = 1
while num <6:
print(num)
num+=1
break
print("end")
|
练习
用户登录(三次机会重试)
3、continue
continue 用于退出当前循环,继续下一次循环
#!/usr/bin/env python
#-*- coding:utf-8 -*-
num = 1
while num <6:
print(num)
num+=1
continue
print("end")
练习
使用while循环打印 1 2 3 4 5 6 8 9 10
4、while else
while True:
if 3 > 2:
print('你好')
break
else:
print('不好')
while True:
if 3 > 2:
print('你好')
print('不好')
# 大家看到的这个是不是感觉效果是一样的啊,其实不然
# 当上边的代码执行到break的时候else缩进后的内容不会执行
练习
1.首先让用户输入序号选择格式如下: 0.退出 1.开始登录 如果用户选择序号0 就提示用户退出成功 如果用户选择序号1就让用户输入用户名密码然后进行判断,正确就终止循环,错误重新输入
2.用户可持续输入(用while循环),用户使用的情况: 输入A,则显示走大路回家,然后在让用户进一步选择: 是选择公交车,还是步行? 选择公交车,显示10分钟到家,并退出整个程序。 选择步行,显示20分钟到家,并退出整个程序。 输入B,则显示走小路回家,并退出整个程序。 输入C,则显示绕道回家,然后在让用户进一步选择: 是选择游戏厅玩会,还是网吧? 选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。 选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算
算数运算
以下假设变量:a=10,b=20
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
逻辑运算
针对逻辑运算的进一步研究:
1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。
例题:
判断下列逻辑语句的True,False。
3>4 or 4<3 and 1==1 1 < 2 and 3 < 4 or 1>2 2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
2 , x or y , x为真,值就是x,x为假,值是y;
x and y, x为真,值是y,x为假,值是x。
例题:求出下列逻辑语句的值。
8 or 4 0 and 3 0 or 4 and 3 or 7 or 9 and 6
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
运行结果:8030 or 4 and 3 or 7 or 9 and 6分解:
因为and的级别比or的级别高,所以先执行and就是
0 or 3 or 7 or 6
然后运算or
3 or 7 or 6
3 or 6
因为or运算前边条件成立就不考虑后边的值了
所以最后的结果就是3
|
in,not in :
判断子元素是否在原字符串(字典,列表,集合)中:
例如:
#print('喜欢' in 'dkfljadklf喜欢hfjdkas')
#print('a' in 'bcvd')
#print('y' not in 'ofkjdslaf')
练习
有个字符串 s = "alex",如果alex在我们输入的内容中就提示:你说的对.否则就提示不存在
s = "alex" s_input = input("请输入内容:") if s in s_input: print("你说的对") else: print("不存在")