day03回顾:
-
字符串 str
字符串内存放的是有先后顺序关系的文字编码
字面值:
‘’
“”
‘’’’’’
“”"""" (所见即所得字符串,回车键会自转换为换行) -
转义符号
\n ’ " \ \r \t \b
\0oo \xXX \uXXXX \UXXXXXXXX
\0 等同于 \x00
‘A’ 65 0x41
‘a’ 97 0x61
‘0’ 48 0x30
’ ’ 32 0x20 -
原始字符串:
raw字符串
r’’
r""
r’’’’’’
r"""""" ( \ 转义无效) -
字符串运算:
+ += * *=
< <= > >= == !=
in / not in (返回值是布尔类型) -
索引 []
正向索引 0 1 2 3 …
反向索引 -1 -2 … -len(x)
切片 [:] [::]
s[整数开始值: 整数结束值: 整数步长] -
函数:
len(x) / max(x) / min(x)
ord© chr(i)
bin(x) oct(x) hex(x)
str(x) -
字符串的方法:
S.isalpha()
S.isdigit()
S.center(n, fill=’ ')
S.replace(old, new, count)
S.strip() 支掉空白字符
S.startswith(ch)
S.endswith(ch)
S.count()
…
详见:字符串的方法
day04笔记:
字符串的格式化表达式:
- 作用:
生成一定格式的字符串 - 运算符:
% - 语法格式:
格式字符串 % 参数值
格式字符串 % (参数值1, 参数值2, …) - 说明:
格式字符串中以%开头的字符为占位符,占位符的位置将用参数值替换- 示例:
fmt = “姓名: %s, 年龄: %d”
name = input(‘请输入姓名:’) # xiaoli
age = int(input(‘请输入年龄:’)) # 20
s = fmt % (name, age)
print(s) #姓名: xiaoli, 年龄: 20
- 示例:
格式化字符串中的占位符和类型码
%s | 字符串,使用str(x) 函数转换 |
---|---|
%r | 字符串,使用repr(x) 函数转换 |
%c | 整数转为单个字符 |
%d | 整数转为十进制整数 |
%o | 整数转为八进制整数 |
%x | 整数转为十六进制整数(字符a-f小写) |
%X | 整数转为十六进制整数(字符A-F大写) |
%e | 指数形浮点数(e小写) 如 2.9e10 |
%E | 指数形浮点数(E大写) 如 2.9E10 |
%f,%F | 浮点数十进制形式 |
%g,%G | 十进制形式或指数形式浮点数自动转换 |
%% | 等同于一个百分号 |
-
占位符和类型码之间的格式化语法:
- 格式:
% - + 0 宽度.精度 类型码 - 说明:
- 左对齐(默认是右对齐)
+ 显示正号
0 左侧空白位置补零
宽度: 整个数据输出的宽度
精度: 保留小数点后多少位(默认6位) - 示例:
“%10d” % 123 # ’ 123’
“%-10d” % 123 # ‘123 ’
“%10s” % ‘abc’ # ’ abc’
“%-5s” % ‘abc’ # 'abc ’
“%-+10d” % 123 # ‘+123 ’
“%010d” % 123 # ‘0000000123’
“%f” % 12.34567890 # ‘12.345679’
“%.2f” % 12.34567890 # ‘12.35’
“%7.2f” % 12.34567890 # ’ 12.35’
- 格式:
-
练习:
输入三行文字,让这三行文字依次以20个字符的宽度右对齐输出
如:
请输入第1行: hello beijing
请输入第2行: abcd
请输入第3行: a
输出结果:
hello beijing
abcd
a
- 做完上面的题后再思考:
能否以最长字符串的长度进行右对齐显示(左侧填充空格)
循环语句
while 语句
for 语句
-
问题:
输入一个整数n, 写程序打印如下n行文字
这是第 1 行
这是第 2 行
这是第 3 行
…
这是第 n 行
程度如下:
n = int(input(“请输入数字”))
i = 1
if i <= n:
print(“这是第”, i, ‘行’)
i += 1
示例详见: loop_demo.py -
while语句:
-
作用:
根据一定条件,重复的执行一条语句或多条语句 -
语法:
while 真值表达式:
语句块1(*此部分的语句可能会重复执行)
else:
语句块2 -
说明:
else 子句可以省略(同if类似)
执行步骤:- 先执行真值表达式,测试布尔值是否为True或False
- 如果真值表达式测试值为True, 则执行语句块1,然后再回到第1步
- 如果真值表达式测试值为False,则执行else子句中的语句2,然后结束此while语句.如果没有else子句,则直接结束此while语句的执行
-
思考:
打印 1 ~ 20的整数
-
-
练习:
- 写程序 打印 1 ~ 20的整数,打印在一行显示,每个数字之间用空格分隔
1 2 3 4 5 6 … 18 19 20
提示:
print(n, end=’ ') - 打印1 ~ 20 的整数,每行打印5个,打印4行
如:
1 2 3 4 5
6 7 8 9 10
11 …
… - 输入一个整数,打印一个宽度和高度都是n个字符的长方形
如:
输入: 4
####
# #
# #
####
输入: 6
######
# #
# #
# #
# #
######
-
练习:
-
写程序, 计算:
1 + 2 + 3 + 4 + … 100 的和
并打印结果
提示: 用一个专用的变量初始化为零,用它来保存和 -
写程序.
输入一个开始值用begin绑定
输入一个结束值用end绑定
计算:
从begin开始,到end结束的所有整数的和
如:
请输入开始值: 1
请输入结束值: 10
打印:
和是: 55
-
-
写一个程序
输入一个开始整数值用变量 begin绑定
输入一个结束整数值用变量 end绑定
打印从begin开始到end结束的每个整数,打印在一行内
如:
请输入开始值: 8
请输入结束值: 30
打印:
8 9 10 11 12 13 … 30
完成后思考: 如何实现每5个整数打印在一行内,打印多行
提示: 可以多加一个变量来记录打印个数 -
while 注意事项:
- 要控制循环的真值表达式来防止死循环
- 通常在循环语句块内改变循环变量来控制循环次数和变量的走向
-
while 语句的嵌套
while 语句本身也是语句,和其它语句一样,可以嵌套到任何复合语句中- 示意:
while 真值表达式:
...
while 真值表达式2:
...
else:
...
...
else:
...
-
示例:
打印 1 ~ 20整数,打印在一行内
1 2 3 4 5 6 … 20
打印以上的十行 -
练习:
输入一个数,打印指定宽度的正方形
如:
输入:5
打印:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
如:
输入:3
打印:
1 2 3
1 2 3
1 2 3 -
break 语句
- 问题:
如果在循环过程中,不想再继续执行此循环的执行了,怎么办? - 作用:
用于循环语句(while,for语句)中,用来终止当前循环语句的执行 - 说明:
- 当break执行后,此循环语句内break之后的语句将不再执行
- break 通常和if语句组合使用
- break 终止循环时,循环语句的else子句将不会被执行
- break 语句只能终止当前循环语句的执行.如果有循环嵌套时,不会跳出外重循环
- 问题:
-
死循环
死循环是指条件一直成立的循环
死循环通常用break语句来终止循环
死循环的else子句永远不会执行
死循环通常用在循环次数不确定的循环中示例:
while True:
n = int(input("请输入整数:"))
if n == 0:
break
print("您输入的是:", n)
-
练习:
写一个程序, 任意输入一些整数,当输入小于零的数时结束输入,当输入完成后,打印您输入的这些正整数的和
如:
请输入: 1
请输入: 2
请输入: 3
请输入: 4
请输入: -1
打印: 您刚才输入的这些正整数的和是: 10 -
练习:
- 打印从零开始的浮点数,每个数增加0.5,打印出10以内这样的数
0.0 0.5 1.0 1.5 … 9.0 9.5 - 写程序求:
1/1 + 1/3 + 1/5 + 1/7 + … + 1/99的和 - 输入一个整数表示三角形的宽度和高度,打印出如下的三角形:
如:
请输入三解形的宽度: 4
打印如下:
*
**
- 写程序,输入一个整数代表正方形的宽和高,打印如下的正方形:
如:
请输入宽度: 5
打印正方形如下:
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
如:
请输入宽度: 4
打印正方形如下:
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
- 打印从零开始的浮点数,每个数增加0.5,打印出10以内这样的数