Python基础05_str_补充
继续学习中,
补充一些str 的索引、切片、长度、循环输出等。
#!/usr/bin/env python # coding:utf-8 # 通过下标索引获取字符串中的某个字符 # 1. 索引 test = "alexerdor" a = test[0] print(a) # 2. 切片 b = test[0:2] # 小于2, 不包括2 print(b) c = test[0:-1] # 负1的意思是到最后减1 print(c) # 3. 长度 test2 = "中国人" d = len(test2) # python3中返回3, 2.7中则返回9 (因为utf8的字节长度是3 ) print(d) # 4. 循环输出 txt = "大数据分析挖掘与开发技术" # # n = 0 # while n < len(txt): # v = txt[n] # print(v) # n += 1 # For循环 for t in txt: # 简单的方法,轻松地得到和上面循环输出方法一样的结果。 print(t) ######################## 记住以上4 种,以及前面必须的 6 种普通方法。 # for dict bdict = {} bdict['aaa'] = 1 bdict['bbb'] = 2 bdict['ccc'] = 3 bdict['ddd'] = 4 bdict['eee'] = 5 # 字典只能输出下标, 并且不是按顺序输出: 针对key的hash取模 for v in bdict: print (v) # 改动后 for k, v in bdict.items(): # print(k + " ===> " + str(v)) print("{}===>{}".format(k,v)) #使用format方法输出。
以及str 的range / replace
#!/usr/bin/env python # coding:utf-8 # 1. replace name ="tom & jerry jessies" s = name.replace("j","T",1) # 第3个参数是指定替换几个。不指定则全部替换 print(s) # 2. range 帮助创建连续数字,通过步长来指定不连续 test = range(0,100,9) # 第3个参数是步长 for e in test: print(e) ## 练习: 将文本对应的索引打印出来。 str_name = "分布式文件系统HDFS" le = len(str_name) rg = range(0,le) for a in rg: print(a, str_name[a]) # 老师的讲解 简写 txt = input(">>>") for item in range(0,len(txt)): print(item, txt[item])
原生字符串 ,即在引号前面加 r 以及数字的e记法。
#!/usr/bin/env python # coding:utf-8 # strings = 'C:\radio\fm' # print(strings) # row string 字符串前面加了r 后,结尾不能有反斜杠\ strings_r = r'C:\radio\fm' print(strings_r) str2 = r'''C:\windows\nimda''' print(str2) # 数字的 e 记法 a = 15e3 print(type(a),a) b = 5.99 b2 = int(b) print(b2) # 判断数据类型是否正确.前提是你知道类型的情况下使用,如果不知道类型的现个变量的判断,则使用type(a) == type(b) print(isinstance(b, float))
下面是完成老师布置的作业, 老师还未讲解。
#!/usr/bin/env python # coding:utf-8 # 1. 执行python脚本的2种方式。 # 2. 简述位、字节的关系。 # 3. 简述ascii unicode utf-8 gbk的关系 # 4. 请写出“李白”分别用utf-8和gbk编码所占的位数。 # 5. python的单行注释和多行注释分别用什么。 # 6. 声明变量注意事项有哪些? # 7. 如有以下变量 n = 5 ,请使用int提供的方法,得到该变量最少可以用多少个二进制位表示? n = 5 i = n.bit_length() print("最少{}位".format(i)) # 8. 布尔值分别有什么? # 9. 阅读代码,写出执行结果 a = "alex" b =a.capitalize() print(a) print(b) # 请出执行结果: alex Alex # 10. 写代码,有如下变量,按照要求实现每个功能 name = " aleX" ## a. 移除name变量两边的空格,并输出 print(name.strip()) ## b. 判断name变量对应的值是否以"al"开头,并输出结果 print(name.startswith("al")) ## c. 判断是否以"X"结尾并输出 print(name.endswith("X")) ## d. 将变量中"l"替换成"p" print(name.replace("l","p")) ## e. 将变量以"l"分割并输出 print(name.split("l")) ## f. 请问上一题 e 分割之后得到值是什么类型? ## 应该是 list 类型 ## g. 将变量的值变大写, 变小写 print(name.upper()) print(name.lower()) ## i. 输出变量值的第2个字符 print(name[1]) ## j. 输出变量值的前3个字符 print(name[0:3]) ## k. 输出变量值的后2个字符 print(name[len(name)-2:len(name)]) ## l. 输出变量值 e 所在位置 print(name.find("e")) ## m. 获取子序列,不包含最后一个字符 print(name[0:-1]) # 21. 字符串是否可以迭代对象,如可以请使用 for 循环每一个元素 test = "大数据分析主要的工具都是Apache公司开发的" tmp = str.maketrans("的","d") #参数的长度应该相等
test2 = test.translate(tmp) for f in test2: print(f)
# 22. 用代码将下面2个变量的元素拼接成字符串
abc = "alexericrain"
lis = ['alex','eric','rain']
# print(abc+lis[0]+lis[1]+lis[2])
for a in lis:
abc += a
print(abc)
# s1 = "_".join(abc)
# print(s1)
# print("_".join(lis))
# 23. python2中和python3中的range的区别
# 24. 实现一个整数加法计算器,如: 5+9 或 5+ 9 或 5 + 9
num = input("请输入加法表达式:")
s2 = num.split("+")
res = 0
for i in s2:
if i.strip().isdigit():
res += int(i)
else:
print("请输入正确的数字")
break
print("您的和是:",res)
# 25. 用户输入的内容中有几个数字几个字母?
cont = input("请输入内容:")
n1 = 0
n2 = 0
for t in cont:
if t.isalpha():
n1 += 1
if t.isdigit():
n2 += 1
print("字母{}个,数字{}个".format(n1,n2))
# 26. 简述int 和 9 等数字 以及 str 和 "xxoo"等字符串的关系?
# 27. 制作趣味组合,等待用户输入名字、地点、爱好, 根据这些任意实现
# 28. 制作随机验证码,不区分大小写. # 流程:用户执行程序 >> 给用户显示需要输入验证码 >> 用户输入的值 相同时显示正确,否则继续生成随机验证码等待输入。
def check_code():
import random
checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
return checkcode
while True:
code = check_code()
print(code)
tmp = input("请输入验证码:")
if tmp.lower() == code.lower():
print("right.") break
切片的一些补充:
a = 'abcdjklmn' print(a[:4]) # 前4个 print(a[-2]) # 倒数第2个 print(a[-2:]) # 取最后2个 print(a[4:]) # 下标4到最后 print(a[:]) # 全部 print(a[:5:2]) # 从头到5,步长2 print(a[4:0:-1]) # 反向取,从下标4到0 print(a[4::-1]) # 反向取,从下标4到开头 print(a[-1::-1]) # 反转 print(a[::-1]) # 反转 #2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 def chk(a): return a[1::2] print(chk((22,33,11,55,44,66,)))