# Author: 刘佳赐-Isabelle October 22,2018
"""
1、有变量name = "aleX leNb" 完成如下操作:
1) 移除 name 变量对应的值两边的空格,并输出处理结果
2) 移除name变量左边的"al"并输出处理结果
3) 移除name变量右面的"Nb",并输出处理结果
4) 移除name变量开头的a"与最后的"b",并输出处理结果
5) 判断 name 变量是否以 "al" 开头,并输出结果
6) 判断name变量是否以"Nb"结尾,并输出结果
7) 将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
8) 将name变量对应的值中的第一个"l"替换成"p",并输出结果
9) 将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
10) 将name变量对应的值根据第一个"l"分割,并输出结果。
11) 将 name 变量对应的值变大写,并输出结果
12) 将 name 变量对应的值变小写,并输出结果
13) 将name变量对应的值首字母"a"大写,并输出结果
14) 判断name变量对应的值字母"l"出现几次,并输出结果
15) 如果判断name变量对应的值前四位"l"出现几次,并输出结果
16) 从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
17) 从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
18) 从name变量对应的值中找到"X le"对应的索引,并输出结果
19) 请输出 name 变量对应的值的第 2 个字符?
20) 请输出 name 变量对应的值的前 3 个字符?
21) 请输出 name 变量对应的值的后 2 个字符?
22) 请输出 name 变量对应的值中 "e" 所在索引位置?
"""
# name = "aleX leNb"
#
# task_1 = name.strip()
# print(task_1)
#
# task_2 = name.strip("al")
# print(task_2)
#
# task_3 = name.strip("Nb")
# print(task_3)
#
# task_4 = name.strip("ab")
# print(task_4)
#
# task_5 = name.startswith("al")
# print(task_5)
#
# task_6 = name.endswith("Nb")
# print(task_6)
#
# task_7 = name.replace("l", "p")
# print(task_7)
#
# task_8 = name.replace("l", "p", 1)
# print(task_8)
#
# task_9 = name.split("l")
# print(task_9)
#
# task_10 = name.split("l", 1)
# print(task_10)
#
# task_11 = name.upper()
# print(task_11)
#
# task_12 = name.lower()
# print(task_12)
#
# task_13 = name.capitalize()
# print(task_13)
#
# task_14 = name.count("l")
# print(task_14)
#
# task_15 = name.count("l", 1, 5)
# print(task_15)
#
# task_16 = name.index("N")
# print(task_16)
#
# task_17 = name.find("N")
# print(task_17)
#
# task_18 = name.find("X le")
# print(task_18)
#
# 19
# print(name[1])
#
# 20
# print(name[0:3])
#
# 21
# print(name[-2:])
#
# 22
# print(name.find('e'))
"""
2、有字符串s = "123a4b5c"
1)通过对s切片形成新的字符串s1,s1 = "123"
2)通过对s切片形成新的字符串s2,s2 = "a4b"
3)通过对s切片形成新的字符串s3,s3 = "1345"
4)通过对s切片形成字符串s4,s4 = "2ab"
5)通过对s切片形成字符串s5,s5 = "c"
6)通过对s切片形成字符串s6,s6 = "ba2"
"""
# s = "123a4b5c"
# task_21 = s[0:3]
# print(task_21)
# task_22 = s[3:6]
# print(task_22)
# task_23 = s[::2]
# print(task_23)
# task_24 = s[1:-2:2]
# print(task_24)
# task_25 = s[-1]
# print(task_25)
# task_26 = s[-3:0:-2]
# print(task_26)
'''3、使用while或for循环分别打印字符串s="asdfer"中每个元素。'''
# s = "asdfer"
# for i in s:
# print(i)
'''4、使用for循环对s="asdfer"进行循环,但是每次打印的内容都是"asdfer"。'''
# s = "asdfer"
# for i in range(len(s)):
# print(s)
'''5、使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb, 例如:asb, bsb,csb,...gsb。'''
# s = "abcdefg"
# for i in range(len(s)):
# print(s[i]+"sb")
'''6、使用for循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。'''
# s = "321"
# num = 0
# for i in s:
# print('倒计时%s秒' % i)
"""
7、实现一个整数加法计算器(两个数相加):
如:content = input("请输入内容:") 用户输入:5+9或5+ 9或5 + 9,然后进行分割再进行计算。
"""
# content = input("please input content:")
# ls = content.split("+")
# sum_result = int(ls[0].strip()) + int(ls[1].strip())
# print(sum_result)
"""
8、升级题:实现一个整数加法计算器(多个数相加):
如:content = input("请输入内容:") 用户输入:5+9+6 +12+ 13,然后进行分割再进行计算。
"""
# content = input("please input content:")
# ls = content.split("+")
# sum_result = 0
# for i in range(len(ls)):
# sum_result += int(ls[i].strip())
# print(sum_result)
"""
9、计算用户输入的内容中有几个整数(以个位数为单位)。
如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla
"""
# content = input("请输入内容:")
# calculator = 0
# for i in range(10):
# calculator += content.count("%d" % i)
# print(calculator)
"""
10、写代码,完成下列需求:
用户可持续输入(用while循环),用户使用的情况:
输入A,则显示走大路回家,然后在让用户进一步选择:
是选择公交车,还是步行?
选择公交车,显示10分钟到家,并退出整个程序。
选择步行,显示20分钟到家,并退出整个程序。
输入B,则显示走小路回家,并退出整个程序。
输入C,则显示绕道回家,然后在让用户进一步选择:
是选择游戏厅玩会,还是网吧?
选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
"""
# way = input("Please select your way home:")
#
# while True:
# if way == "A":
# print("走大路回家")
# way = input("Please further select:公交车or步行?")
# if way == "公交车":
# print("10分钟到家")
# break
# elif way == "步行":
# print("20分钟到家")
# break
# elif way == "B":
# print("走小路回家")
# break
# elif way == "C":
# way = input("绕道回家,请继续选择:游戏厅还是网吧?")
# if way == "游戏厅":
# way = input("一个半小时到家,爸爸在家,拿棍等你。请重新输入:")
# elif way == '网吧':
# way = input("两个小时到家,妈妈已做好了战斗准备。请重新输入:")
"""
11、写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
"""
# result = 0
# num = 1
# while num < 100:
# if num % 2 == 1:
# result += num
# elif num % 2 == 0 and num != 88:
# result -= num
# num += 1
# print(result)
"""
16、制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进⾏任意现实
如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
"""
# name = input("please input your name:")
# hometown = input("please input your hometown:")
# hobby = input("please input your hobby:")
#
# message = """
# -----Personal Info-----
# %s 来自 %s
# %s 的爱好是 %s
# """ % (name, hometown, name, hobby)
# print(message)
"""
17、等待⽤户输⼊内容,检测⽤户输⼊内容中是否包含敏感字符?如果存在敏感字符提示“存在敏感字符请重新输⼊”,
并允许⽤户重新输⼊并打印。敏感字符:“⼩粉嫩”、“⼤铁锤”
"""
# message = input("Please leave a message:")
# while True:
# if "⼩粉嫩" in message:
# message = input("存在敏感字符请重新输⼊:")
# elif "⼤铁锤" in message:
# message = input("存在敏感字符请重新输⼊:")
# else:
# print(message)
# break
"""
18、写代码,有如下列表,按照要求实现每一个功能
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
1)计算列表的长度并输出
2)列表中追加元素"seven",并输出添加后的列表
3)请在列表的第1个位置插入元素"Tony",并输出添加后的列表
4)请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
5)请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
6)请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
7)请给列表添加元素"eric",并输出添加后的列表
8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
9)请删除列表中的第2至4个元素,并输出删除元素后的列表
10)请将列表所有得元素反转,并输出反转后的列表
11)请计算出"alex"元素在列表li中出现的次数,并输出该次数。
"""
# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
# 1
# task_1 = len(li)
# print(task_1)
# 2
# li.append("seven")
# print(li)
# 3
# li.insert(0, "Tony")
# print(li)
# 4
# li[1] = "Kelly"
# print(li)
# 5
# l2 = [1, "a", 3, 4, "heart"]
# li.extend(l2)
# print(li)
# 6
# s = "qwert"
# li.extend(list(s))
# print(li)
# 7
# li.append("eric")
# 8
# li.pop(1)
# print(li.pop(1))
# print(li)
# 9
# del li[1:4]
# print(li)
# 10
# li.reverse()
# print(li)
# 11
# print(li.count("alex"))
"""
19、写代码,有如下列表,利用切片实现每一个功能
li = [1, 3, 2, "a", 4, "b", 5,"c"]
1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
2)通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
3)通过对li列表的切片形成新的列表l3,l3 = ["1,2,4,5]
4)通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
5)通过对li列表的切片形成新的列表l5,l5 = ["c"]
6)通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
"""
# li = [1, 3, 2, "a", 4, "b", 5, "c"]
# 1
# l1 = li[0:3]
# print(l1)
# 2
# l2 = li[3:6]
# print(l2)
# 3
# l3 = li[::2]
# print(l3)
# 4
# l4 = li[1:-1:2]
# print(l4)
# 5
# l5 = list(li[-1])
# print(l5, type(l5))
# 6
# l6 = li[-3:0:-2]
# print(l6)
"""
20、写代码,有如下列表,按照要求实现每一个功能。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
1)将列表lis中的"tt"变成大写(用两种方式)。
2)将列表中的数字3变成字符串"100"(用两种方式)。
3)将列表中的字符串"1"变成数字101(用两种方式)。
"""
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
# 1
# lis[3][2][1][0] = lis[3][2][1][0].upper()
# lis[3][2][1][0] = "TT"
# print(lis)
# 2
# 方法1
# lis[1] = "100"
# lis[3][2][1][1] = "100"
# print(lis)
# 方法2
# while True:
# for i in range(len(lis)):
# if lis[i] == 3:
# lis[i] = "100"
# elif type(lis[i]) == list:
# for j in range(len(lis[i])):
# if lis[i][j] == 3:
# lis[i][j] = "100"
# elif type(lis[i][j]) == list:
# for k in range(len(lis[i][j])):
# if lis[i][j][k] == 3:
# lis[i][j][k] = "100"
# elif type(lis[i][j][k]) == list:
# for l in range(len(lis[i][j][k])):
# if lis[i][j][k][l] == 3:
# lis[i][j][k][l] = "100"
# break
# print(lis)
# 3
# lis[3][2][1][2] = 101
# lis[3][2][1][2] = int(lis[3][2][1][2]) + 100
# print(lis)
"""
21、请用代码实现:
li = ["alex", "eric", "rain"]
利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"
"""
# li = ["alex", "eric", "rain"]
# task = "_".join(li)
# print(task, type(task))
"""
22、利用for循环和range打印出下面列表的索引。
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
"""
# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
# for i in range(len(li)):
# print(i)
"""
23、利用for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中。
"""
# result = []
# for num in range(1, 100, 1):
# if num % 2 == 0:
# result.append(num)
# print(result)
"""
24、利用for循环和range 找出50以内能被3整除的数,并将这些数插入到一个新列表中。
"""
# result = []
# for num in range(1, 50, 1):
# if num % 3 == 0:
# result.append(num)
# print(result)
"""
25、利用for循环和range从100~1,倒序打印。
"""
# for num in range(100, 0, -1):
# print(num)
"""
26、利用for循环和range从100~10,倒序将所有的偶数添加到一个新列表中,然后对列表的元素进行筛选,将能被4整除的数留下来。
"""
# result = []
# for num in range(100, 10, -2):
# if num % 4 == 0:
# result.append(num)
# print(result)
"""
26、利用for循环和range,将1-30的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成*。
"""
# result = []
# for i in range(1, 31, 1):
# result.append(i)
# print(result)
#
# for i in range(len(result)):
# if result[i] % 3 == 0:
# result[i] = "*"
# print(result)
"""
27、查找列表li中的元素,移除每个元素的空格,并找出以"A"或者"a"开头,并以"c"结尾的所有元素,
并添加到一个新列表中,最后循环打印这个新列表。
li = ["TaiBai ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc"]
"""
# lis = ["TaiBai ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc"]
# result = []
# for i in range(len(lis)):
# lis[i] = lis[i].strip()
# if lis[i].startswith("A") or lis[i].startswith("a") or lis[i].endswith("c"):
# result.append(lis[i])
# print(lis[i])
# print(result)
"""
28、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:
敏感词列表 li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
则将用户输入的内容中的敏感词汇替换成等长度的*(苍老师就替换***),并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
"""
# sensitive_vol = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
# result = []
#
# message = input("请留言:")
# 批改前:
# while True:
# for i in range(len(sensitive_vol)):
# if sensitive_vol[i] in message:
# message = message.replace(sensitive_vol[i], "*"*len(sensitive_vol[i]))
# result.append(message)
# print(message)
# print(result)
# break
# 批改后
# while True:
# for i in sensitive_vol: # 列表可以直接用for循环的, 不用取索引
# if i in message:
# message = message.replace(i, "*"*len(i))
# result.append(message)
# print(message)
# print(result)
# break
"""
29、有如下变量(tu是个元祖),请实现要求的功能
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
a. 讲述元祖的特性
b. 请问tu变量中的第一个元素 "alex" 是否可被修改?
c. 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"
d. 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"
"""
# tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
# 1 元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。
# 2 不可以
# 3 "k2"对应的值是列表,"k2"对应的值可以被修改
# print(type(tu[1][2]["k2"]))
# tu[1][2]["k2"].insert(0, "seven")
# print(tu)
# 4 "k3"对应的值是元组,不可以被修改
# print(type(tu[1][2]["k3"]))
"""
30、字典dic,dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
a. 请循环输出所有的key
b. 请循环输出所有的value
c. 请循环输出所有的key和value
d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
e. 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
f. 请在k3对应的值中追加一个元素 44,输出修改后的字典
g. 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
"""
# dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
# a
# lis = list(dic.keys())
# for i in range(len(lis)):
# print(lis[i])
# b
# lis = list(dic.values())
# for i in range(len(lis)):
# print(lis[i])
# c
# lis = list(dic)
# lis_2 = list(dic.values())
# for i in range(len(lis)):
# print(lis[i], lis_2[i])
# d
# dic["k4"] = "v4"
# print(dic)
# e
# dic["k1"] = "alex"
# print(dic)
# f
# dic["k3"].append(44)
# print(dic)
# g
# dic["k3"].insert(0, 18)
# print(dic)
"""
31、av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌丝请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]},
"大陆":{
"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}
}
a.给此 ["很多免费的,世界最大的","质量一般"]列表第二个位置插入一个 元素:'量很大'。
b.将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。
c.将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。
d.将此["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]列表的 "verygood"全部变成大写。
e.给 '大陆' 对应的字典添加一个键值对 '1048' :['一天就封了']
f.删除此"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"]键值对。
g.给此["全部免费,真好,好人一生平安","服务器在国外,慢"]列表的第一个元素,加上一句话:'可以爬下来'
"""
# av_catalog = {
# "欧美": {
# "www.youporn.com": ["很多免费的,世界最大的", "质量一般"],
# "www.pornhub.com": ["很多免费的,也很大", "质量比yourporn高点"],
# "letmedothistoyou.com": ["多是自拍,高质量图片很多", "资源不多,更新慢"],
# "x-art.com": ["质量很高,真的很高", "全部收费,屌丝请绕过"]
# },
# "日韩": {
# "tokyo-hot": ["质量怎样不清楚,个人已经不喜欢日韩范了", "verygood"]},
# "大陆": {
# "1024": ["全部免费,真好,好人一生平安","服务器在国外,慢"]}
# }
# a
# av_catalog["欧美"]["www.youporn.com"].append("量很大")
# print(av_catalog["欧美"]["www.youporn.com"])
# b
# av_catalog["欧美"]["x-art.com"].pop(1)
# print(av_catalog["欧美"]["x-art.com"])
# c
# av_catalog["欧美"]["x-art.com"].pop(1)
# print(av_catalog["欧美"]["x-art.com"])
# d
# av_catalog["日韩"]["tokyo-hot"][1] = av_catalog["日韩"]["tokyo-hot"][1].upper()
# print(av_catalog["日韩"]["tokyo-hot"])
# e
# av_catalog["大陆"]["1048"] = ['一天就封了']
# print(av_catalog["大陆"])
# f
# del av_catalog["欧美"]["letmedothistoyou.com"]
# print(av_catalog["欧美"])
# g
# av_catalog["大陆"]["1024"][0] = av_catalog["大陆"]["1024"][0] + " 可以爬下来"
# print(av_catalog["大陆"]["1024"][0])
"""
32、有字符串"k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....}
"""
# s = "k:1|k1:2|k2:3|k3:4"
# lis = s.split("|")
# result = {}
# print(lis)
# for i in lis:
# ii = i.split(":")
# result.setdefault(ii[0], ii[1])
# print(result)
"""
33、元素分类
有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
"""
# li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
# l1 = []
# l2 = []
# for i in li:
# if i > 66:
# l1.append(i)
# elif i < 66:
# l2.append(i)
# result = {"k1": l1, "k2": l2}
# print(result)