切片,索引,基本数据类型
is 和 == 区别
id()函数
== 判断两边的值
is 判断内存地址
1. Python是一门解释型. 弱类型语言
2. print("内容", "内容", end="\n") 打印语句
3. 变量: 程序运行过程中产生的中间值. 存储在内存中.供后面的程序调用
4. 变量的数据类型:
int, 整数
str, 字符串
bool, True,False
5. 命名规则:
1. 由数字,字母,下划线组成
2. 不能是纯数字或者数字开头
3. 不能是关键字
4. 不能太长
5. 要有意义
6. 不要用中文
7. 区分大小写
8. 推荐使用驼峰和下划线命名
6. input() 用户输入
7. if 判断
if 条件:
代码块
else:
代码块
if 条件:
代码块
elif 条件2:
代码块
..
else:
二. while循环
while 条件:
循环体
else:
代码块
流程:
判断条件是否为真. 如果真.执行循环体. 再次判断条件是否真. ....直到条件为假. 执行else. 退出循环
break 直接打断循环.
continue 停止当前本次循环. 继续执行下一次循环
格式化输出:
%s 字符串
%d 数字
运算符:
逻辑运算
1. and. 两端同时为真. 结果才是真.
2. or 或者. 两端有一个是真. 结果就是真
3. not 取反.
() => not => and => or
x or y
如果x非零, x, 否则 y
编码:
1. ASCII. 8bit, 1byte
2. GBK, 16bit, 2byte
3. unicode, 32bit,4byte
4. UTF-8, 英文:8bit, 1byte, 欧洲: 16bit, 2byte, 中文: 24bit, 3byte
3. 基本数据类型
1. int 数字. bit_length() 二进制长度
3. bool 空:False, 非空:True
# by luffycity.com
# a = 10
# print(type(a))
# s = str(a)
# print(type(s))
#
# int(s)
# 想把某数据转换成xxx数据类型. xxx(数据)
# a = 0 # False
# print(bool(a))
# s = "" # 空字符串是false
# print(bool(s)) # True
# 空的东西是False. 非空的东西是True
# lst = [1] # 空列表是False
# print(bool(lst))
# dic = {'jj':'林俊杰'} # 空字典是False
# print(bool(dic))
# a = None # 表示空. 真空.
# print(bool(a))
# 所有的空都是False. 所有的非空都是True
# 想把某数据装换成xxx数据类型. xxx(数据)
# str => int
# int(s)
# int => str
# str(i)
# lst => tuple
# tuple(lst)
# tuple => list
# list(tu)
# while 1: # 死循环
# print("alex是个人才")
lst = [1,2,3] # 列表
tu = tuple(lst)
print(type(tu))
2. str, 字符串不可变
索引切片: 由0开始
[起始位置: 结束位置: 步长]
操作:
1. upper() 变成大写
2. strip() 去掉空格(两端)
3. replace() 替换
4. split() 切割
5. startswith() 以xxx开头(判断)
6. find() 找xxx字符串在原字符串中出现的索引位置. 找不到返回-1
7. count() 数数
8. format() 格式化输出
9. len() 求长度
4. 列表:
由[]表示
有索引和切片
常用操作:
增加:append(), insert(), extend()
删除:pop() remove() del, clear()
修改:索引切片修改
查询:
for 变量 in 可迭代对象:
循环体
else:
# by luffycity.com
# s = "伊丽莎白鼠"
# print(s[0])
# print(s[1])
# print(s[2])
# print(s[3])
# print(s[4])
# # print(s[5]) # 索引不能超过边界
#
# print(s[-1]) # 倒数第一个
# print(s[-2])
# print(s[-3])
# print(s[-4])
# print(s[-5])
# s = "伊丽莎白鼠的溜肥肠还有挖掘机"
# 切片 [起始位置: 结束位置] 1.顾头不顾尾, 2.从左往右切
# print(s[1:3]) # 从1切到3. 但是取不到3 [1,3)
# print(s[1:]) # 从1开始切. 切到结尾
# print(s[:2]) # 从头切到2
# print(s[:]) # 从头到尾
# print(s[-3:-1]) # 只能从左往右切
# 给出第三个参数来控制方向,第三个参数叫步长
# print(s[-1:-3:-1]) # - 表示反方向. 从右往左切
# print(s[4:10:3])
# print(s[-3:-9:-2])
操作:
sort(reverse=True) 排序
reverse() 翻转
len() 长度
count() 数数
元组:
tuple, 只读列表, 由()组成. 不可变的
索引和切片. for循环
解构, 解包
a, b = 1, 2
range(10) 0-9
range(5, 10) 5-9
range(5,10,3) 5,8
5. dict 字典
由{}表示. 存储key:value 键值对. 根据key来计算hash值.找到对应的内存地址.
key必须是可hash的. 不可变的. int, str, 元组, bool
操作:
增加: dict[key] = value
setdefault(key, value)
删除: pop(key), del , popitems(), clear()
修改: dict[key] = value
查询:dict[key], get(key, 默认值),
setdefault() 先执行新增那个流程. 然后.获取到key对应的值
常规操作:
keys() 获取所有的key.返回的像个列表
values() 获取所有value
items() 获取所有的key,value.装成元组. 返回列表[(key,value), (key,value)]
通过items()获取的是k,v
for k,v in dict.items():
直接循环遍历. 拿到的是key
for k in dict:
# s = "al1ex is a gay and Wu傻sir is A gay too"
# s1 = s.capitalize() # 把首字母变成大写
# print(s1)
# s2 = s.lower() # 小写
# print(s2)
# s3 = s.upper() # 大写
# print(s3)
# s4 = s.swapcase() # 大小写互换
# print(s4)
# s2 = "БBß" # 俄美德
# print(s2)
# print(s2.lower())
# print(s2.casefold())
# s5 = s.title() # 把每个单词的首字母大写
# print(s5)
# s = "sb"
# s1 = s.center(10, "*") # 强行使用*在原字符串左右两端进行拼接. 拼接成10个单位
# print(s1)
# s = " alex is a gay "
# s1 = s.strip() # 默认去掉空格. 空白\t \n
# print(s1)
# username = input("请输入用户名:").strip()
# password = input("请输入密码:").strip()
# if username == 'alex' and password =="123":
# print("成功")
# else:
# print("失败")
# s = "sb alex wusir sb sb taibai taibai sb"
# print(s.strip("sb")) # 可以指定要去掉的内容
# s = "泰坦尼克号, 西虹市首富, 小猪佩奇, 冒险王"
# s1 = s.replace("冒险王", "西西里的美丽传说")
# s2 = s.replace("佩奇", "wusir")
# print(s2)
#
# s = "alex_wusir_taibai_ritian"
# s1 = s.replace("_","")
# print(s1)
# s8 = "sylar_alex_taibai_wusir_eggon"
# # s9 = s8.replace("i", "sb", 2) # 换两次
# # print(s9)
#
# lst = s8.split("taibai") # 切完的结果是一个列表. 列表中装的是字符串. 用什么切. 就会损失掉什么
# print(lst)
# s = """我家大门常打开
# 开放怀抱等你
# 后面是什么歌词
# 我忘了"""
# lst = s.split("\n")
# print(lst)
# s = "我今天下午要去吃饭饭"
# lst = s.split("我今天下午要去吃饭饭哈哈哈") # 没切
# print(lst)
# s = "我叫%s, 我今年%s了, 我喜欢%s" % ("周杰伦", "40", "昆凌")
# print(s)
# s = "我叫{}, 我今年{}了, 我喜欢{}".format("周杰伦", "40", "昆凌")
# print(s)
# s = "我叫{0}, 我今年{1}了, 我喜欢{2}".format("周杰伦", "40", "昆凌")
# print(s)
# s = "我叫{name}, 我今年{age}了, 我喜欢{hobby}".format(hobby="周杰伦", age="40", name="昆凌")
# print(s)
# s = "alex is a gay"
# print(s.startswith("tory")) # 以xxx开头
# print(s.endswith("girl")) # 以xxx结尾
# s = "I have a dream. I want to kill you!"
# 都可以进行索引范围
# print(s.count("dream")) # 计算a在字符串中出现的次数
# print(s.find("a")) # 查找xxx在字符串中出现的位置. 只找第一次出现的位置, 没有就返回-1
# print(s.index("z")) # 当字符串不存在的时候. 报错
# s = "abcdefg1@"
# print(s.isdigit()) # %d
# print(s.isalpha()) # 字母
# print(s.isalnum()) # 是否由数字和字母组成
# s = "壹仟贰佰五十六萬拾"
# print(s.isnumeric())
# 字符串长度, python的内置函数len(), int(), bool(), str(), type()
# s = "娃哈哈可口可乐"
# print(len(s)) # 字符串中的字符的个数
# s = "王小利刘能赵四"
# # # 对字符串进行遍历.
# n = 0
# while n < len(s):
# print(s[n])
# n = n + 1
#
# # 迭代
# for c in s: # charactor
# print(c)
-----------------------------------------------------------------------------------------------------------------------------华 丽 丽 的 分 割 线---------------------------------------------------------------------------------------------------------------------------------------
作业讲解
1.有变量name = "aleX leNb" 完成如下操作:
# name = "aleX leNb"
# 1)移除 name 变量对应的值两边的空格,并输出处理结果
# print(name.strip())
# 2)移除name变量左边的"al"并输出处理结果
# print(name.lstrip("al"))
# 3)移除name变量右面的"Nb",并输出处理理结果
# print(name.rstrip("Nb"))
# 4)移除name变量开头的a"与最后的"b",并输出处理结果
# print((name.lstrip('a')).rstrip('b'))
# 5)判断 name 变量是否以 "al" 开头,并输出结果
# print(name.startswith('al'))
# 6)判断name变量是否以"Nb"结尾,并输出结果
# print(name.endswith('Nb'))
# 7)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
# print(name.replace('l','p'))
# 8)将name变量对应的值中的第一个"l"替换成"p",并输出结果
# print(name.replace('l','p',1))
# 9)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
# print(name.split('l'))
# 10)将name变量对应的值根据第⼀一个"l"分割,并输出结果。
# print(name.split('l',1))
# 11)将 name 变量对应的值变大写,并输出结果
# print(name.upper())
# 12)将 name 变量对应的值变小写,并输出结果
# print(name.lower())
# 13)将name变量对应的值首字母"a"大写,并输出结果
# print(name.title())
# 14)判断name变量对应的值字母"l"出现几次,并输出结果
# print(name.count('l'))
# 15)如果判断name变量对应的值前四位"l"出现几次,并输出结果
# print(name.count('l'))
# 16)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
# print(name.index('N'))
# 17)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
# print(name.find('N'))
# 18)从name变量对应的值中找到"X le"对应的索引,并输出结果
# print(name.find('X le'))
# 19)请输出 name 变量对应的值的第 2 个字符?
# print(name[1])
# 20)请输出 name 变量对应的值的前 3 个字符?
# print(name[0:2])
# 21)请输出 name 变量对应的值的后 2 个字符?
# print(name[-2:])
# 22)请输出 name 变量对应的值中 "e" 所在索引位置?
# print(name.find('e'))
2.有字符串s = "123a4b5c"
# 1)通过对s切片形成新的字符串s1,s1 = "123"
# s1 = s[0:3]
# print(s1)
# 2)通过对s切片形成新的字符串s2,s2 = "a4b"
# s2 = s[3:6]
# print(s2)
# 3)通过对s切片形成新的字符串s3,s3 = "1345"
# s3 = s[::2]
# print(s3)
# 4)通过对s切片形成字符串s4,s4 = "2ab"
# s4 = s[1:6:2]
# print(s4)
# 5)通过对s切片形成字符串s5,s5 = "c"
# s5 = s[-1:]
# print(s5)
# 6)通过对s切片形成字符串s6,s6 = "ba2"
# s6 = s[5:0:-2]
# print(s6)
3.使用while和for循环分别打印字符串s="asdfer"中每个元素。
s = "asdfer"
count = 0
while count < len(s):
print(s[count])
count += 1
for i in s:
print(i)
4.使用for循环对s="asdfer"进行循环,但是每次打印的内容都是"asdfer"
s = 'asdfer'
for i in s:
print(s)
5.使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb,例如:asb, bsb,csb,...gsb。
s = "abcdefg"
for i in s:
print(i+"sb")
6.使用for循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时
2秒","倒计时1秒","出发!"。
s="321"
for i in s:
print("倒计时%s秒" % i)
else:
print("走吧")
7,实现一个整数加法计算器(两个数相加):
如:content = input("请输⼊入内容:") 用户输入:5+9或5+ 9或5 + 9,然后进
行分割再进⾏计算。
content = input("请输⼊入内容:")
s = content.split("+")
sum = 0
for i in s:
i = int(i)
sum += i
print(sum)
8,升级题:实现一个整数加法计算器(多个数相加):
如:content = input("请输入内容:") 用户输入:5+9+6 +12+ 13,然后进行
分割再进行计算。
content = input("请输⼊入内容:")
s = content.split("+")
sum = 0
for i in s:
i = int(i)
sum += i
print(sum)
9,计算用户输入的内容中有几个整数(以个位数为单位)。
如:content = input("请输⼊入内容:") # 如fhdal234slfh98769fjdla
say = input("请输入一组字符串:")
num = 0
for i in say:
if i.isdigit() == True:
num += 1
print("一共有%s个整数" % (num))
10、写代码,完成下列需求:
用户可持续输⼊入(用while循环),用户使用的情况:输入A,则显示走大路回家,然后在让用户进一步选择:
是选择公交车,还是步行?
选择公交车,显示10分钟到家,并退出整个程序。
选择步⾏行行,显示20分钟到家,并退出整个程序。
输入B,则显示走小路回家,并退出整个程序。
输入C,则显示绕道回家,然后在让用户进⼀一步选择:
是选择游戏厅玩会,还是网吧?
选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其
重新输入A,B,C选项。
选择网吧,则显示‘两个小时到家,妈妈已做好了了战斗准备。并让其重
新输入A,B,C选项。
while True:
la = input("请输入ABC选择回家的方式(a:走大路回家 b:走小路回家 c:绕道回家):")
if la == 'a':
print("走大路回家")
la1 = input("选择公交车,还是步行?")
if la1 == "公交车":
print('十分钟到家')
break
else:
print('二十分钟到家')
break
elif la == 'B':
print("走小路回家")
break
else:
print("绕道回家")
la2 = input("游戏厅还是网吧")
if la2 =='游戏厅':
print("一个半小时到家,爸爸在家,拿棍等你。")
continue
else:
print("两个小时到家,妈妈已做好了战斗准备。")
continue
11、写代码:计算 1 - 2 + 3 ... + 99 中除了了88以外所有数的总和?
sum = 0
count = 1
while count < 100:
if count == 88:
count = count + 1
continue
elif count % 2 == 0:
sum = sum - count
else:
sum = sum + count
count = count + 1
print(sum)
12. (升级题)判断一句话是否是回文. 回文: 正着念和反着念是一样的. 例如, 上海
自来水来自海上(升级题)
qiu = input("请输入一句话:")
if qiu[::-1] == qiu:
print("是回文")
else:
print("不是回文")
13. 输入一个字符串,要求判断在这个字符串中大写字母,小写字母,数字,
其它字符共出现了了多少次,并输出出来
say = input("请输入一组字符串:")
big = 0
smrt = 0
num = 0
other = 0
for i in say:
if i.isdigit() == True:
num += 1
elif i.isupper() == True:
big += 1
elif i.islower() == True:
smrt += 1
else:
other += 1
print("以下字符串中有大写字母%s个,小写字母%s个,数字%s个,其他字符%s个" % (big , smrt, num, other))
14、制作趣味模板程序需求:等待用户输入名字、地点、爱好,根据用户的名
字和爱好进行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地方干xxx
name = input("请输入你的名字:")
place = input("请输入地点:")
hobby = input("请输入你的爱好:")
print("敬爱可亲的%s,最喜欢在%s地方干%s" % (name, place, hobby))
15. (升级题) 给出百家姓. 然后用户输入一个人的名字. 判断这个人是否是百家
姓中的姓氏(升级题)
first_names = """
赵钱孙李,周吴郑王。
冯陈褚卫,蒋沈韩杨。
朱秦尤许,何吕施张。
孔曹严华,金魏陶姜。
戚谢邹喻,柏水窦章。
云苏潘葛,奚范彭郎。
鲁韦昌马,苗凤花方。
俞任袁柳,酆鲍史唐。
费廉岑薛,雷贺倪汤。
滕殷罗毕,郝邬安常。
乐于时傅,皮卞齐康。
伍余元卜,顾孟平黄。
和穆萧尹,姚邵湛汪。
祁毛禹狄,米贝明臧。
计伏成戴,谈宋茅庞。
熊纪舒屈,项祝董梁。
杜阮蓝闵,席季麻强。
贾路娄危,江童颜郭。
梅盛林***,钟徐邱骆。
高夏蔡田,樊胡凌霍。
虞万支柯,昝管卢莫。
经房裘缪,干解应宗。
丁宣贲邓,郁单杭洪。
包诸左石,崔吉钮龚。
程嵇邢滑,裴陆荣翁。
荀羊於惠,甄曲家封。
芮羿储靳,汲邴糜松。
井段富巫,乌焦巴弓。
牧隗山谷,车侯宓蓬。
全郗班仰,秋仲伊宫。
宁仇栾暴,甘钭厉戎。
祖武符刘,景詹束龙。
叶幸司韶,郜黎蓟薄。
印宿白怀,蒲邰从鄂。
索咸籍赖,卓蔺屠蒙。
池乔阴鬱,胥能苍双。
闻莘党翟,谭贡劳逄。
姬申扶堵,冉宰郦雍。
卻璩桑桂,濮牛寿通。
边扈燕冀,郏浦尚农。
温别庄晏,柴瞿阎充。
慕连茹习,宦艾鱼容。
向古易慎,戈廖庾终。
暨居衡步,都耿满弘。
匡国文寇,广禄阙东。
欧殳沃利,蔚越夔隆。
师巩厍聂,晁勾敖融。
冷訾辛阚,那简饶空。
曾毋沙乜,养鞠须丰。
巢关蒯相,查后荆红。
游竺权逯,盖益桓公。
万俟司马,上官欧阳。
夏侯诸葛,闻人东方。
赫连皇甫,尉迟公羊。
澹台公冶,宗政濮阳。
淳于单于,太叔申屠。
公孙仲孙,轩辕令狐。
钟离宇文,长孙慕容。
鲜于闾丘,司徒司空。
丌官司寇,仉督子车。
颛孙端木,巫马公西。
漆雕乐正,壤驷公良。
拓跋夹谷,宰父谷梁。
晋楚闫法,汝鄢涂钦。
段干百里,东郭南门。
呼延归海,羊舌微生。
岳帅缑亢,况郈有琴。
梁丘左丘,东门西门。
商牟佘佴,伯赏南宫。
墨哈谯笪,年爱阳佟。
第五言福,百家姓终
"""
'''
i = input('请输入你的名字(只适用于单字姓氏):')
s = i[0]
result = first_names.find(s)>=0
if result == True:
print("存在于百家姓当中")
else:
print("不存在于百家姓当中")