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,)))

 

posted @ 2018-03-16 08:15  枫若雪  阅读(274)  评论(0编辑  收藏  举报