Python基础之基础数据类型I
知识导入
用户输入input
-
引子
我们登录qq,输入用户名、 密码。获取到用户输入的用户名、密码,然后在将用户名、密码与数据库中存储的数据进行匹配。input就是等待用户输入的功能。
-
简单使用
print(111) name = input('请输入姓名:') print(222) print(name) # 语法解释 input(字符串形式的提示语) # 过程 input会让程序夯住,等待用户输入内容,用户输入内容之后,回车,获取输入内容赋值给等号左边的变量,然后程序在向下执行。
-
input
出来的都是字符串类型content = input('>>>') # print(content) # type方法,判断该数据是什么数据类型 print(content, type(content))
-
练习
# 输入姓名,年龄,性别,最终输出一句话 : 我叫xx, 今年xx岁,性别xx. name = input('请输入姓名:') age = input('请输入年龄:') sex = input('请输入性别:') content = '我叫' + name + ',' + '今年' + age + '岁,' + '性别' + sex + '.' print(content)
屏幕输出print
-
引子
我们输入完数据,完成功能的要求,需要测试验证,这是就要屏幕输出打印来验证功能
# 可以直接打印自己想要打印的内容 print('111') # --------------- # 定义一个变量,把变量名写进print中,打印变量名所对应得值 a = 10 print(a)
print
在一定情况下和格式化输出配合起来使用更加灵活
1.int(整型)
- int 整形 整数类,我们熟知的-5,-4,-3,-2,-1,0,1,2,3,4,5… 等等这些数字就是整型数据
- 对于整型数据我们可以用于
+ - * \ % **
等等算数运算
- 对于整型数据我们可以用于
2.String(字符串)
2.1字符串的初识
-
在python中凡是用引号引起来,通过一个一个字符串起来的数据都是字符串类型。可以用单引号,可以用双引号,可以用三个单引号,三个双引号。
msg = 'bary我1@' # 8个字符 msg = 'b_ 3我们' # 6个字符 # -------------- # 单双三引号组成的字符串没有任何区别。 name1 = "bary" name2 = 'bary' name3 = '''bary''' name4 = """bary""" print(name1, name2, name3, name4) # -------------- # 单双引号可以配合使用 # msg = 'I am barry,18 years old' # print(msg) # 报错 # msg = 'I'm bary,18 years old' msg = "I'm bary,18 years old" print(msg) # -------------- # 三引号一般用于换行字符串 content = """ 千锤万凿出深山, 烈火焚烧若等闲。 粉身碎骨全不怕, 要留清白在人间。 """ print(content) # -------------- # 字符串可以与数字相乘。 n1 = '天哥' n2 = n1 * 5 print(n2) # -------------- # 字符串可以与字符串相加。 n1 = '天哥' n2 = 'sb' n3 = n1 + n2 + '123' + '556' print(n3)
2.2字符串str
-
引子
python中凡是用引号引起来通过一个一个字符串起来的数据就称之为字符串类型。
-
字符串可以与字符串相加。
-
字符串可以与数字相乘。
-
字符串与数字的转换。
s1 = '100' ----> int(s1) # -------------- i = 20 str(i)
-
2.2.1字符串的索引与切片
msg = ‘人生苦短我要学Python’
-
字符串的每个字符都一个唯一的固定的索引值。
- 如果从左往右计算,第一个字符的索引值为0,依次累加。
- 如果从右往左计算,第一个字符的索引值为-1,依次累减。
- 我们可以按照索引进行取值
msg = '人生苦短我要学Python' s1 = msg[0] print(s1) print(msg[2]) print(msg[-1]) print(msg[4])
-
我们也可以按照切片取值,顾首不顾尾。
-
正向切片
语法: msg[起始索引: 结尾索引+1] # -------------- msg = '人生苦短我要学Python' # s1 = msg[0] # print(s1) # print(msg[2]) # print(msg[-1]) # print(msg[4]) # -------------- # print(msg[0:3]) # 如果从一个字符开始切片,索引0可以省略不写 # print(msg[:3]) # print(msg[5:9]) # print(msg[-6:-2]) # print(msg[5:-2]) # -------------- msg = '人生苦短我要学Python' # 从短取到n # print(msg[3:]) # 取到最后 # 从人取到n print(msg[:])
-
正向切+步长
语法: msg[起始索引: 结尾索引+1: 步长] # -------------- msg = '人生苦短我要学Python' # 取人 苦 我 # print(msg[:5:2]) print(msg[5:-1:2]) print(msg[:-4:3])
-
反向切片,一定要加一个反向步长-1.
语法: msg[起始索引: 结尾索引-1: 反向步长] # -------------- msg = '人生苦短我要学Python' # print(msg[-1:-4]) # print(msg[-1:-4:-1]) # print(msg[4::-1]) print(msg[4::-2])
-
2.3字符串的常用操作方法
*****前提
对字符串的任何的操作都是形成一个新的字符串,与原字符串无关。
-
upper lower
, 大小写方法,将xxx变为XXX,将XXX变为xxx。s1 = 'Allen Mitnick' ret1 = s1.upper() print(ret1, s1) ret2 = s1.lower() print(ret2, s1) # -------------- # 应用 username = input('请输入用户名:') password = input('请输入密码:') code = 'QweR3' your_code = input('请输入验证码:') # if your_code == code or your_code == 'QWER3' or ...... if your_code.upper() == code.upper(): if username == 'bary' and password == '123': print('登录成功') else: print('用户名或者密码错误') else: print('验证码输入错误')
-
Startswith endswith
判断此字符串是以xx为开始;判断此字符串是以xx为结束。
s1 = 'allen' print(s1.startswith('a')) print(s1.startswith('al')) print(s1.startswith('allen')) print(s1.startswith('ae')) print(s1.endswith('n')) print(s1.endswith('en'))
-
strip
去除字符串两边的空格,换行符,制表符。还可以去除指定的字符。
# s1 = '\t叶 子' # s2 = '叶\n子' # print(s1) # print(s2) # -------------- # s1 = '\Allen \n' # print(s1.strip()) # -------------- s1 = 'alle \tn' print(s1.strip()) # -------------- # 从左至右,从右至左依次判断字符是否在我指定的字符集中,如果在就去除,直到遇到不在的字符停止去除。 s1 = 'handsomemitnick' # ret = s1.strip('m') ret = s1.strip('mem') print(ret) # -------------- # 自己课下测试,这两个方法与strip用法一样,只不过lstrip只是去除左边的,rstrip只是去除右边的。 # lstrip rstrip # -------------- 应用 # strip一般与input配合使用 username = input('请输入用户名;').strip() # 'barry ' password = input('请输入密码').strip() if username == 'bary' and password == '123': print('登录成功') else: print('用户名或者密码错误')
-
split
分割,将一个字符串按照指定的分隔符进行分割,返回一个列表。
# str -----> list msg = '天哥 豪哥 博哥' l1 = msg.split() # 默认按照空格分割 print(l1) # -------------- msg = '天哥 豪哥 博哥' l1 = msg.split(',') # 指定分割符号进行分割 print(l1) # -------------- msg = ',宏哥,航哥,力哥,金哥' l2 = msg.split(',') print(l2) print('', ' ') # -------------- # split可以指定分割次数 msg = '蒲哥;伦哥;硕哥;珍哥' l3 = msg.split(';', 2) print(l3)
-
join
联合,可以将一个可迭代对象中的元素按照指定的连接符连接到一起。
(
str
list
列表tuple
元组,dict
字典set
集合 都是可迭代对象。如果一个数据类型是有多个元素组成可以看成是可迭代对象。)# list -----> str。 l1 = ['宏哥', '航哥', '力哥', '金哥'] msg = ','.join(l1) print(msg) msg = '+'.join(l1) print(msg) msg = '_'.join(l1) print(msg) msg = 'barry'.join(l1) print(msg) msg = '_'.join('barry') print(msg)
-
Repalce
替换,将数据中的x
替换成y
。msg = 'AI是NBA的超级巨星,AI也是得分后卫,不要把AI当作控球后卫对待' msg2 = msg.replace('AI', 'Allen') print(msg) print(msg2) print(msg.replace('AI', 'allen', 2))
-
is系列
n = '3allen' print(n.isalnum()) # 该字符串是否全部由数字或者字母组成 n1 = '20200126' print(n1.isdigit()) # 该字符串是否全部由数字组成 n2 = 'Kobe' print(n2.isalpha()) # 该字符串是否全部由字母组成 # -------------- # 应用 age = input('请输入你的年龄:') if age.isdigit(): age = int(age) print(age) else: print('输入的有非数字元素!!!')
-
count
查找统计字符串中的某个元素(某些元素)出现的次数。
msg = 'allen arge apple' print(msg.count('a')) print(msg.count('ar'))