一、数据类型
python2与python3数据类型有不相同
#python2
>>> a = 13
>>> a
13
>>> type(a)
<type 'int'> 整数型
>>> a = 1234124512512341235124512512
>>> type(a)
<type 'long'> 长型,python3中没有长型
python3
>>> a = 13
>>> type(a)
<class 'int'>
>>> a = 1245123512512561251245124124124
>>>
>>> type(a)
<class 'int'> 此时的a为整型
>>> a = 'hello'
>>> a
'hello'
>>> a.center(40) 将a放在左右长度为40个字符的中心
' hello '
>>> a.center(40,'*') 将a放在长度为40个*的中心
判断字符串是否合法的练习题
题目
变量名是否合法:
1.变量名可以由字母,数字或者下划线组成
2.变量名只能以字母或者下划线开头
s = 'hello@'
解题思路:
1.判断变量名的第一个元素是否为字母或者下划线 s[0]
2.如果第一个元素符合条件,判断除了第一个元素之外的其他元素s[1:]
#1.变量名的第一个字符是否为字母或下划线
#2.如果是,继续判断 --> 4
#3.如果不是,报错
#4.依次判断除了第一个字符之外的其他字符
#5.判断是否为字母数字或者下划线
代码实现:
while True:
s = input('变量名:')
if s == 'exit':
print('欢迎下次使用')
break
if s[0].isalpha() or s[0] == '_':
for i in s[1:]:
if not(i.isalnum() or i == '_'):
print('%s变量名不合法' %s)
break
else:
print('%s变量名合法' %s)
else:
print('%s变量名不合法' %s)
二、字符串的特性
1.字符串的搜索与替换
s = 'hello world hello'
#find找到字符串,并返回最小的索引
print(s.find('hello'))
#rfind找到子串,并返回最大索引
print(s.find('world'))
#替换字符串中所有的'hello'为'westos'
print(s.replace('hello','westos'))
输出结果:
0 最小索引
11 最大索引
westos word westos 替换hello为westos
2.字符串的对齐
print('学生管理系统'.center(30)) 将 学生管理西系统 这几个字放在长度为30个字符的中间
print('学生管理系统'.center(30,'*'))
print('学生管理系统'.ljust(30,'*')) 将学生管理系统这几个字 放在长度为30个*的左边
print('学生管理系统'.rjust(30,'*')) 右边
print('学生管理系统'.rjust(30,'@'))
打印结果:
学生管理系统
************学生管理系统************
学生管理系统************************
************************学生管理系统
@@@@@@@@@@@@@@@@@@@@@@@@学生管理系统
3.字符串的统计
显示字符串的出现次数
print('hello'.count('l')) 显示hello中l的出现次数
print('hello'.count('ll')) 显示hello中 ll 出现的次数
print(len('hello')) 显示hello的总长度,有多少字符串
打印结果:
2
1
5
4.字符串的分离和连接
s='172.25.254.250' 定义s
s1=s.split('.') s.split 意思为将s中的字符串以"."为分隔符进行切片
print(s1)
print(s1[::-1]) s1[::]意思为打印所有字符串,s1[::-1]为倒叙
date = '2019-1-17'
date1=date.split('-') 以“——” 为分隔符进行切片
print(date1)
打印结果:
['172', '25', '254', '250']
['250', '254', '25', '172']
['2019', '1', '17']
通过指定字符连接两个字符串:
print(''.join(date1)) 直接将date1连接
print('~'.join(date1)) 用~将date1的字符串连接
打印结果:
2019117
2019~1~17
三、字符串练习
1、练习一
题目:
给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个
字符:
'A' : Absent,缺勤
'L' : Late,迟到
'P' : Present,到场
如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),
那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。
示例 1:
输入: "PPALLP"
输出: True
示例 2:
输入: "PPALLL"
输出: False
"""
代码实现:
s = input('输入考勤记录:')
if s.count('A') <= 1 and s.count('LLL') == 0:
print('True')
else:
print('False')
print(s.count('A') <= 1 and s.count('LLL') == 0)
2、练习二
(2017-小米-句子反转)
- 题目描述:
> 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,>单词用空格分割, 单词之间只有一个空格,前>后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”
- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个>字符)
- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
- 示例1:
```
- 输入
hello xiao mi
- 输出
mi xiao hello
代码实现:
print(' '.join(input().split()[::-1]))
3、练习三
题目:
- 题目描述:
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例
如,输入”They are students.”和”aeiou”,
则删除之后的第一个字符串变成”Thy r stdnts.”
- 输入描述:
每个测试输入包含2个字符串
- 输出描述:
输出删除后的字符串
- 示例1:
```
输入
They are students.
aeiou
输出
Thy r stdnts.
代码实现:
s1=input('请输入第一句话:')
s2 = input('请输入第二句话:') 输入
for i in s1: #遍历s1
if i in s2: #如果s2中
s1= s1.replace(i,'') #将i的值变为空
print(s1)
打印结果:
请输入第一句话:we are student
请输入第二句话:aeoiu
w r stdnt
4、练习四
题目:
设计一个程序,帮助小学生练习10以内的加法
详情:
- 随机生成加法题目;
- 学生查看题目并输入答案;
- 判别学生答题是否正确?
- 退出时, 统计学生答题总数,正确数量及正确率(保
留两位小数点);
代码实现:
import random # 引入随机数模块
# count = 0
# right = 0
#
# while True:
# a= random.randint(0,9)
# b= random.randint(0,9)
# print('%d + %d = ' %(a,b))
# question = input('请输入您的答案:(q退出)')
# result = a + b
# if question == str(result):
# print('回答正确')
# right += 1
# count += 1
# elif question == 'q':
# break
# else:
# print('回答错误')
# count += 1
#
# percent = right / count
# print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))
5、作业
题目:
2. 小学生算术能力测试系统:
设计一个程序,用来实现帮助小学生进行百以内的算术练习,它具有以
下功能:
提供10道加、减、乘或除四种基本算术运算的题目;
练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否
正确并显示出相应的信息。
代码实现:
import random
for i in range(10):
a = random.randint(0, 100)
b = random.randint(0, 100)
op = ['+', '-', '*', '/']
s = random.choice(op) print('%d %s %d =' % (a, s, b))
question = input('请输入您的正确答案:(q退出)')
if s == '+':
result = a + b
if str(result) == question:
print('回答正确')
else:
print('回答错误')
elif s == '-':
result = a - b
if str(result) == question:
print('回答正确')
else:
print('回答错误')
elif s == '*':
result = a * b
if str(result) == question:
print('回答正确')
else:
print('回答错误')
elif s == '/':
result = a / b
if str(result) == question:
print('回答正确')
else:
print('回答错误')
elif question == 'q':
break