Python基础三(数据类型之字符串常用方法、for循环)

一、重点练习题问题点解疑

问题点一

8. 写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
count = 1
sum = 0
while count < 100 :
    if count % 2 == 0:
        sum -= count
        if count == 88:
            sum = sum + 88
    else:
        sum += count
    count += 1
print(sum)

  以上是自己所写代码,错误理解题意。

# 8. 写代码:计算 1 - 2 + 3 ... + 99 中除了88意外所有数的总和?

count = 0
sum = 0
while count < 99:
    count += 1
    if count == 88:
        continue
    if count % 2 == 0:
        sum -= count
    else:
        sum += count
print(sum)

  第二种是正确写法,主要体现在count==88时,需要跳过(这里使用continue),再继续下次循环。需要拓宽解题思路。

问题点二

9. 用户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使字符串格式化)

count = 1
while count < 4:
    name = input('请输入姓名:')
    password = input('请输入密码:')
    if name == 'gxy'and password == '123':
        print('登录成功')
        break
    else:
        print('请重新输入,剩余%d'%(3-count))
        count += 1
        if count == 4:
            anwer = input('是否想再试试/y:')
            if anwer == 'y':
                count = 1
else:print('你傻不傻')

  注意:这里使用到知识点是使字符串格式化,将剩余次数和count练习起来。

二、整体初始数据类型

 一、int (数字)1,2,3,..   :主要是用于计算

i = 4
print(i.bit_length())
0      0000 0000
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100

输出结果为3

注:i.bit_length()表示数字转化成二进制所占用的位数

二、字符串(str)

s1 = 'alex'
存储少量的数据,便于操作.

三、布尔(bool) 

只表示判断 输出True     False.


四、tuple 元组

(1,'alex',True,[ ],dict)可以含有数字、字符串、布尔列表字典等
只读列表,不能更改


五、list列表

[1,'alex',True,[1,2,3],dict]
可承载大量的数据,

六、字典dict

{'name':'alex',
'age':54,
'python10':[化工哥,小白,小黑,萌哥,,花哥,娶哥,阎王]
}
1,可存储大量数据,
2,关联型数据.
3,查找数据非常快.

三、int bool str三者之间的转换

    1、数字、字符串之间的转换

int ----> str  str(int)
str ----> int int(str) 只能是数字组成的字符串


2、数字、布尔之间的转换
int ----> bool 0 Fasle 非零 True

i = bool(3)
print(i)-----Ture

i = bool(0)
print(i)----False

bool ----> int    T ---> 1   F --->0

i = int(True)
print(i)------1
i = int(False)
print(i)------0
if 1 :
    print('aaa')------1即为Ture,输出结果为aaa
if 0 :
print('aaa')-----0即为False,不输出结果

  注:while True:  与    while 1 :相比,while 1:  执行效率高

3、字符串与布尔之间的转换
str ---> bool 非空 True 空就是False
bool ----> str str(True) str(False)
s = ''
s1 = ' 1 '
print(bool(s))     # 空是False
print(bool(s1))    # 非空是True
print(str(True),type(str(True)))  ----- 输出  True <class 'str'>

四、字符串操作

一、字符串的索引与切片

 索引即下标,就是字符串组成的元素从第一个开始的,有顺序的,初始索引为0以此类推

s = 'alex wusir ritian'
#str 有顺序,并且有索引,索引是从0开始
s1 = s[0]
print(s1,type(s1))---a
s2 = s[2]
print(s2,type(s2))---e
s3 = s[-1]
print(s3)-----n,-1即倒序
s4 = s[-2]
print(s4)----a

切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)

s = 'alex wusir ritian'
s5 = s[0:4]
print(s5)----alex
s6 = s[2:6]
print(s6)----ex w
s7 = s[5:]
print(s7)----wusir ritian
s8 = s[0:]-----全部打印
s81 = s[:]-----全部打印

二、字符串的常用方法 

 步长:

s = 'alex wusir ritian'
[起始索引:终止索引:步长]
s9 = s[0:3:2]
print(s9)-----ae

  倒序:

s = 'alex wusir ritian'
s10 = s[-1:-6:-1]
print(s10)-----naiti
s11 = s[3:0:-2]
print(s11)----xl
s12 = s[2::-2]
print(s12)----ea

  常用方法

1、s =  'alex wuSir'
*capitalize()首字母大写,其他字母小写
print(s.capitalize())

2、*swapcase()大小写反转
print(s.swapcase())

3、非字母隔开的部分,首字母大写,其他小写
s =  'alex wuSir1taibai*ritian'
print(s.title())

4、s =  'alexawuSir'
***upper  全部大写-----用于验证码或密码登录验证
***lower  全部小写
print(s.upper())
print(s.lower())
code = 'aeDd'
your_code = input('请输入验证码:')
if your_code.upper() == code.upper():
    print('输入正确')
else:print('请重新输入')
重要重要重要重要重要重要重要重要重要重要

5、*以什么居中,填充物默认空
print(s.center(20))
print(s.center(20,'*'))

6、s =  'al\tex wuSir'
print(s.expandtabs())-------补全\前8位,够8位的补全16位

7、***find()通过元素找索引,可以整体找,可以切片,找不到返回-1------优先选用
index()通过元素找索引,可以整体找,可以切片,找不到会报错
print(s.find('a'),type(s.find('a')))
print(s.find('alex'),type(s.find('a')))
print(s.find('a'))
print(s.find('a',1,5))
print(s.find('L'))
print(s.index('L'))
重要重要重要重要重要重要重要重要重要重要

8、s =  'alex wusir'
*** startswith  endswith
print(s.startswith('a'))
print(s.startswith('al'))
print(s.startswith('w',5))
print(s.startswith('W',5))
print('adfads\n','fdsa')
print(s)
重要重要重要重要重要重要重要重要重要重要

9、s =  '\talex wusir\n'
s1 = 'alalelllllllxwusirbl'
*****strip 去除字符串前后两端的空格,换行符,tab键等
print(s.strip())
print(s.lstrip())
print(s.rstrip())
print(s1.strip('lab'))
name = input('请输入名字:').strip()
if name == 'alex':
    print('somebody')
else:print('请重新输入')
重要重要重要重要重要重要重要重要重要重要

10、s = 'alex;wusir;ritian'
s1 = 'alexalaria'
******split       str --->list方法
print(s.split(';'))
print(s.split(';'))
print(s1.split('a',1))
重要重要重要重要重要重要重要重要重要重要

11、replace ******
s1 = '姐弟俩一起来老男孩老男孩老男孩'
s2 = s1.replace('老','小',1)------不输入1,默认全部替换
print(s2)
重要重要重要重要重要重要重要重要重要重要


12、name='jinxin123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成

  

13、*********format*********十分重要十分重要十分重要十分重要
第一种
s = '我叫{},今年{},身高{}'.format('金鑫',21,175)
print(s)
第二种
s = '我叫{0},今年{1},身高{2},我依然叫{0}'.format('金鑫',21,175)
print(s)
第三种
s = '我叫{name},今年{age},身高{high}'.format(name = '金鑫',high=175,age=21)

  

14、count 计算元素出现的次数
s =  'alexaaaaa wusir'
print(s.count('a'))----6个a,输出 6

15、len()计算字符串的宽度
s = 'alex'
print(len(s))-----输出4

 五、for 循环

for循环:用户按照顺序循环可迭代对象的内容

与while区别,for是有限循环

依次输出字符串中的每个元素

旧办法 s = 'salffdsafdsag' count = 0 while count < len(s): print(s[count]) count += 1 新办法 for i in s: print(i)

  

 

posted @ 2018-01-23 17:40  GuoXY  阅读(278)  评论(0编辑  收藏  举报