>

GO语言学习开篇记录,Python学习之路3

- 编辑:www.bifa688.com -

GO语言学习开篇记录,Python学习之路3

   从2018-7-25 10:36:52开始进行我的python学习,当然是在业余时间学习,不是跟风的那种学习、纯粹是想学而去学习,也许我将来不会从事py的岗位,这就是我的初衷。闲话不说我把这周学习的东西整理了一下,写到了这篇博文,以后每周都会更新(因为你那个课程是按照周分得。

Python学习之路3,python学习之路

图片 1

  这周主要学习了刚开始学习,其实有编程思维学起来不算太难,学习了循环,以及字符串格式化,以及流程控制,最后谢了一个小程序。

本节内容:

  • 常用的字符串处理。
  • 格式化输出字符串。
  • 字符串的替换。
  • 字符串和二进制的相互转化。
  • 字典的操作

image.png

    1、循环 while和for循环两种     

字符串操作 

常用的字符串处理

name = 'vector'

print(name.capitalize()) # 首字母大写
print(name.count('e')) # 判断字符e在字符串中有多少个
print(name.center(50,'-')) # 一共打印50个字符,将vector放在中间,两边用-填充
print(name.endswith('r')) # 判断字符串以什么结尾, 如果是以r结尾则返回true
print(name.expandtabs(tabsize=10)) # 如果在字符串中加入t,则在该位置上加入tabsize个空格
print(name.find('ec')) # 找到e在字符串中的位置
print(name.isalnum()) # 如果字符串里面只包含英文和数字, 则返回True
print(name.isalpha()) # 如果字符串里面是纯英文, 则返回True
print(name.isdecimal()) # 如果字符串是十进制数字, 则返回True
print(name.isdigit()) # 如果字符串是否为整数, 则返回True
print(name.isidentifier()) # 判断是否是一个合法的标识符(变量名), 合法则返回True
print(name.islower()) # 判断是否为小写, 是则返回True
print(name.isupper()) # 判断是否为大写, 是则返回True
print(name.isspace()) # 判断是否为空格, 是则返回True
print('My Name Is'.istitle()) # 判断是否为标题(首字符大写), 是则返回True
print(' '.join(['1','2','3'])) # 将列表里面的每个元素用' '拼接起来
print(name.ljust(50,"*")) # 如果字符串长度小于50, 则不够的在左侧用*补充
print(name.rjust(50,"*")) # 如果字符串长度小于50, 则不够的在右侧用*补充
print(name.lower()) # 将大写变成小写
print(name.upper()) # 将小写变成大写
print('nvector'.lstrip()) # 去掉字符串左边的空格和回车
print('vectorn'.rstrip()) # 去掉字符串右边的空格和回车
print('nvectorn'.strip()) # 去掉字符串两边的空格和回车
print('name is a book'.rfind('a')) # 从右边开始找a,返回找到的位置
print('name is a book'.split(' ')) # 将字符串按照空格为界分装成列表, 不写参数则分隔符默认为空格
print('name is na book'.splitlines()) # 将字符串根据换行符为界分装成列表
print('name is a book'.swapcase()) # 大小写互换
print('name is a book'.title()) # 将字符串变成标题(首字母大写)
print('name'.zfill(50)) # 如果字符串不够50个,则在左边用0填充

格式化输出字符串**

name = 'vector {name} {age}'
print(name.format(name = 'rev',age=123)) # 格式化字符串
print(name.format_map({'name':'rev','age':123})) # 字典的形式格式化字符串

字符串替换

#先用maketrans设置替换规则, 然后用translate执行替换
p = str.maketrans('asdfgn','123456') #第一个参数是被替换的字符,第二个参数是替换的字符
print('name'.translate(p)) # 将规则p传入,打印出来的就是61me,因为n和a被6和1替换掉了

print('name'.replace('n','b',1)) # 将n换成b,第三个参数表示替换几个,如果不写则默认全部替换

字符串和二进制的相互转化

msg = '我爱大延边日不落帝国'
print(msg) # 字符串输出
print(msg.encode(encoding='utf-8')) # 将字符串转换成二进制
print(msg.encode(encoding='utf-8').decode(encoding='utf-8')) # 将二进制转换成字符串

encode参数表示之前是什么格式的,decode参数表示要转换成什么格式的。
如果encode和decode不写参数,默认就是utf-8。

 

谷歌是个好东西,神马都有。只要你输对关键字

           图片 2图片 3

字典

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

字典的特性:

  • dict是无序的
  • key必须是唯一的,so 天生去重

语法:

info = {
    'str1':'zhangsan',
    'str2':'lisi',
    'str3':'wangwu',
    'str4':'zhaoliu'
}

 

常见的字典操作:

info = {
    'str1':'zhangsan',
    'str2':'lisi',
    'str3':'wangwu',
    'str4':'zhaoliu'
}

print(info) # 打印全部字典
print(info['str2']) # 根据键名打印字典元素
info['str1'] = 'yangzirui' # 这样就会修改值, 如果键名不存在则会直接创建
del info['str2'] # 删除该元素
info.pop('str2') # 这也是删除
print(info.popitem()) # 随机删除一个, 并返回他的键值对
print(info['str1']) # 打印数据, 如果键名不存在, 就会报错,不推荐用
print(info.get('str2')) # 打印数据, 如果键名不存在, 则返回none, 推荐
print('str1' in info) # 判断键名是否存在,存在打印true,否则打印false
aaa = info.setdefault('str5','liangsohohfefho') # 如果info里面有键为str5的,则直接返回对应的值;如果没有,则创建后返回对应的值

a = {
    'str1':'asdfsdfd',
    1:2,
    2:3
}
info.update(a) # 将字典a合并到info中,如果有交叉,则用a字典中的值
info.items() # 将字典转成列表, 列表中的每个元素都由元组组成,每个元组又原字典的每个键值对组成

c = dict.fromkeys([1,2,3],'test') # 创建一个新字典, 键为1,2,3, 值均为test, 如果不写值,则均为none;后面赋的值是三个键共有的, 所以改一个就全都改了

 

循环字典:

info = {
    'str1':'zhangsan',
    'str2':'lisi',
    'str3':'wangwu',
    'str4':'zhaoliu'
}
#第一种循环方法
for i in info:
    print(i,info[i])
# 这应该是最基本的循环了

# 第二种循环方法
for k,v in info.items():
    print(k,v)
# 这种循环方式的效率没有第一种循环效率高,因为这种需要将字典转换成列表

输出结果:(两种循环方式均是这样)

图片 4

 

本节内容: 常用的字符串处理。 格式化输出字符串。 字符串的替换。 字符串和二进制的相互转化。 字典的...

就入坑GO语言开始,搜索关键字列表,算是自己学习的心路体现

  • 字符串格式化
  • 字符串分割
  • json解析
  • socket client
  • http post file
  • 字符串截取,(中文长度)
  • 无限循环
  • 字符串除去不可见字符
  • 数组初始化
  • xml生成
  • 命令行带颜色输出
  • http get
  • urlencode
  • xml解析,解析到结构
  • map
  • 类型判断
  • 编码规范
  • 时间格式化:time.Now().Format("2006-01-02 15:04:05”) 变态啊
  • 多值返回
  • 测试代码
  • 数组遍历
  • 执行系统命令
  • 编码转换
  • 文件监听变化
  • md5
  • debug方法
  • defer 在循环里的Bug
  • Go的口头禅“不要使用共享数据来通信;使用通信来共享数据
a=1
while True:
    print(a)
    a =1
    if(a==5434):
        break
for i in range(0,10):
    if i<3:
        print("loop",i)
    else:
        continue
    print("hehe....")

for j in range(10):
    print('------------',j)
    for k in range(10):
        print (k)
        if k>5:
            break

    '''
        continue :跳出本次循环,进行下次循环
        break:终止当前循环

    '''

View Code

     2、字符串格式化 ( 号连接%s ,%d代替格式化,.format函数)

# 拼接
a="hello"
b="word"
c=a b# helloword

# 第二种%代替格式化  %s代替字符串格式 %d代替数字

name=input("Name:")



age=int(input("Age:"))

# input()输入的所有字符类型都是为字符串  即使输入数字也是str类型的
# 所以用%d的时候要强制转换int(),否则报错
# 强制转换  int()-->转换为数字类型  str()--->转换为字符串类型

print(type(age),  type(str(age)))

job=input("Job:")

salary=input("Salary:")

info='''
---------info of %s----------
             Name:%s
             Age:%d
             Job:%s
             Salary:%s
''' %(name,name,age,job,salary)

# 第二种用.format格式如下

info2='''
-------info of {name}-----------
         Name:{name}
         Age:{age}
         Job:{job}
         Salary:{salary}
'''.format(
    name=name,
    age=age,
    job=job,
    salary=salary
)

# 第三种 用 .format  格式如下

info3='''
--------info of {0}-------
            Name:{0}
            Age:{1}
            Job:{2}
            Salary:{3}
'''.format(name,age,job,salary)

'''
最后做了一个小程序
实现用户登录
三次以上锁定账户
账号和密码都是从all_user.txt这个文件读出
别锁定的账号存到;lock.user.txt中
'''

with open('all_user.txt','r') as f:

    list=f.readlines()# 先读取用户文件存入list数组

    # print(f.readlines())

    for i in range(0,len(list)):

        list[i]=list[i].rstrip("n")#去掉换行符

        list[i] = list[i].split(',')#将数组格式编程[[username1,password1],[username2,password2]]
#  用户输入
count=0
username_list=[]#村用户每次输入的username
while count<3:
    username=input("username:")

    username_list.append(username)
    password=input("password:")
    #   查找已锁定的用户
    with open('lock_user.txt', 'r') as f:

        list_lock = f.readlines()

        for i in range(0, len(list_lock)):
            list_lock[i] = list_lock[i].rstrip("n")

            list_lock[i] = list_lock[i].split(',')
            if username==list_lock[i][0]:
                print ("该用户已被锁定")
                exit()#直接退出程序
    # 如果没有锁定判断输入的对或者不对
    for j in range(0,len(list)):

        if username==list[j][0] and password==list[j][1]:

            print ("OK")
            count=5#计数编程5
            break
    else:
        count =1
        print ("false")
else:
    if count !=5:#count=5是ok的就不走这一步
        # print (username_list)
        if username_list[0]==username_list[1]==username_list[2]:
            print("您的同一个账号已经输入三次密码错误已被锁定")
            with open("lock_user.txt","a") as f:
                f.write(username 'n')
        else:
            print ("您三次输入的账号都不相同")
#可能程序有bug 请大神们多多关照,多提提意见,谢谢

本文由必发88手机版发布,转载请注明来源:GO语言学习开篇记录,Python学习之路3