数据类型及其字符串的特性

一、数据类型

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值