1.基础数据类型
整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set).
- int:数字:主要用于运算。1 ,2,3...
- bool:判断真假:True, False.
- str:简单少量的储存数据,并进行相应的操作。name = 'alex',
- tuple:只读,不能更改。(1,'alex')
- list:大量有序数据,[1,'ses',True,[1,2,3],{'name':'jinxin'}]
- dict:大量数据,且是关联性比较强的数据 {'name':'jinxin','age':18,'name_list':['张三','李四']}
- set:交集、并集、差集
int 主要用于运算
- 二进制转化为十进制
# 0001 1010转化为十进制
b = 1 * 2**4 + 1 * 2**3 + 0 * 2**2 + 1 * 2**1 + 0 * 2**0
print(b)
- int
# int
# bit_length 有效的二进制的位数
i = 4
print(i.bit_length())
数据类型之间的转换
# int <————> str
#字符串必须是整数时才能转换成int
i = 4
print(str(i))
i = '4'
print(int(i))
# str <————> bool
# 非空即True
s = ""
print(bool(s))
s = "aloha"
print(bool(s))
例如:
s1 = input("请输入内容:")
if s1: # 这里的s1如果不为空,则为True
print("输入的内容是:%s"% s1)
else:
print("没有输入任何内容")
字符串str的基本操作
- 索引
s1 = "my name is 杨森"
# 字符串从左至右有顺序,下标,索引
# 对字符串进行索引、切片出来的数据都是字符串类型
s2 = s1[5]
print(s2,type(s2))
# 从左至右下标为0 1 2 3 ……
# 从右至左下标为-1 -2 -3 ……
s3 = s1[-1]
print(s3)
- 切片
s4 = s1[3:7] # 切片结果不包括下标为7的字符
print(s4)
s5 = s1[3:] # 从第3位取到最后
print(s5)
s6 = s1[:5] # 从第0位取到第4位
print(s6)
s7 = s1[1:13:2] # :2代表步长
print(s7)
s8 = s1[-1:-9:-1] # :-1 是倒叙取
print(s8)
s9 = s1[:] # 全部取出来
print(s9)
s10 = s1[::-1] # 倒叙全取
print(s10)
-
upper() 和lower()
应用场景:验证码不区分大小写
s = "YangSen"
s1 = s.upper()
print(s1)
s2 = s1.lower()
print(s2)
应用:用户登录系统,验证码不区分大小写
username = input('请输入用户名:')
password = input('请输入密码:')
code = 'FuCk'
enter_code = input('请输入验证码(不区分大小写):')
if code.lower() == enter_code.lower(): # 将code 和enter_code都转换成小写
if username == 'jason' and password == '123':
print('登录成功')
else:
print('账号或密码错误')
else:
print('error code')
-
startswith()
判断一个字符串是不是以……为开头
s = 'jason'
print(s.startswith('j'))
print(s.startswith('jas'))
print(s.startswith('jason'))
- replace()
msg = '我叫Jason,我今年24,我是个男生。'
msg1 = msg.replace('我', 'ta') # 默认全部替换
msg2 = msg.replace('我', 'ta', 2) # 从左往右替换2个
print(msg1)
print(msg2)
-
strip()
只能删除开头或者结尾的字符(默认为空格或换行符)
# strip
msg = '我是jason,我24岁,我是个男生我'
msg1 = msg.strip('我')
print(msg)
print(msg1)
-
split() (重要)
按照指定分隔符分隔一个字符串,并返回一个列表(默认按照空格分隔)
msg = 'my name is jason'
msg1 = msg.split()
msg2 = msg.split('m')
msg3 = msg.split(' ', 2) # 按照空格分割,只分出前两个
print(msg1)
print(msg2)
print(msg3)
- join()
s = 'jason'
l1 = ['我', '好', '帅']
s1 = '+'.join(s)
s2 = '+'.join(l1) # 如果join()的是列表,列表中只能是字符串,不可以有数字
print(s1)
print(s2)
- count()
s = 'sdlakjfiwejlknvinlijljlksdahjkbvlskdjafklh'
print(s.count('d'))
-
format()
格式化输出
# 方法一 format()中必须按照顺序一一对应
msg = '我叫{},今年{},性别{}'.format('jason', '24', '男')
print(msg)
# 方法二 重复字符串不需要多次写
msg = '我叫{0},今年{1},性别{2},我依然叫{0}'.format('jason', '24', '男')
print(msg)
# 方法三 format()中顺序可以随意
msg = '我叫{name},今年{age},性别{sex}'.format(age='24', sex='男', name='jason')
print(msg)
- is 系列
s = 'jason123'
print(s.isalnum()) # 判断字符串中是由字母或数字组成
print(s.isalpha()) # 判断字符串中只由字母组成
print(s.isdecimal()) # 判断字符串中只由十进制组成
# 应用:
number = input('请输入您的金额:')
if number.isdecimal():
print('您的金额为:%s' % int(number))
else:
print('输入有误')
2.for循环
- 引入
msg = '世界上最帅的男人:杨森'
# 使用while循环,把字符串里的每一个字符挨个打印出来
num = len(msg) # 获取可迭代对象的总个数
index = 0
while index < num:
print(msg[index])
index += 1
- for 循环基本格式
for 变量 in iterable:
pass
- 示例
msg = '世界上最帅的男人:杨森'
for i in msg:
print(i)
3.练习
练习1 回家的路
输入A,则显示走大路回家,然后在让用户进一步选择:
是选择公交车,还是步行?
选择公交车,显示10分钟到家,并退出整个程序。
选择步行,显示20分钟到家,并退出整个程序。
输入B,则显示走小路回家,并退出整个程序。
输入C,则显示绕道回家,然后在让用户进一步选择:
是选择游戏厅玩会,还是网吧?
选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C
while True:
way = input('请选择回家的路(A/B/C):')
if way == 'A':
print('你选择了大路回家!')
while True:
big_road = input('请继续选择交通方式(bus/walk):')
if big_road == 'bus':
print('你选择了公交车,10分钟到家')
break
elif big_road == 'walk':
print('你选择了步行,20分钟到家')
break
else:
print('输入有误,重新输入')
break
elif way == 'B':
print('你选择了走小路回家,3分钟就到。')
break
elif way == 'C':
print('你选择了先不回家!')
while True:
play_choose = input('请选择玩什么(game/papapa):')
if play_choose == 'game':
print('一个半小时到家,爸爸在家,拿棍等你。')
break
elif play_choose == 'papapa':
print('两个小时到家,妈妈已做好了战斗准备。')
break
else:
print('你只能二选一,重新选!')
else:
print('输入有误,重新输入!')
练习2 回文判断
判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海 ⾃来⽔来⾃海上
方法一:使用for循环
# 方法一:使用for循环
while True:
msg = input('请输入内容:')
num = len(msg)
for i in range(num):
if msg[i] == msg[num - i -1]:
continue
else:
print('no')
break
else:
print('yes')
方法二:字符串倒叙查
# 方法二:字符串切片
while True:
msg = input('请输入内容:')
if msg == msg[::-1]:
print("yes")
else:
print('no')