Java教程

21.8.16学习记录

本文主要是介绍21.8.16学习记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

昨日内容回顾

1.流程控制for循环

for+变量名+in+迭代器(可以是元组列表字典)

for i in range(10):
    print(i)

2.range用法

for i in range(10) # 当一个数字时,指的是默认从0开始到9
print(i) 
for i in range(2,10) # 当两个个数字时,指的是从指定数2开始到9
print(i) 
for i in range(2,10,2) # 当三个数字时,指的是从指定数2开始到9当中间隔为2类似于等差数列
print(i) 

3.数据类型内置方法

整数型int
print(bin(100))   # 0b1100100z 十进制转2进制

print(oct(100))   #  0o144  十进制转8进制
 
print(hex(100))  #   0x64  十进制转16进制
字符串str
"""
索引取值,间隔步长,统计长度,切片操作.strip(移除操作)split(切割字符)maxsplit=1(最大切割数为1)rsplit(从右 切割)
upper (转大写)lower(转小写)
count(出现几次字数)
replace(替换) jion(加入)

""" 
列表list
"""
索引取值,切片操作,间隔步长,统计长度
append(尾部添加元素)insert(插入)extend(扩展列表)
 del(删除元素) pop(弹出元素) count (统计次数) 
    sort(升序) sort(reverse=True)倒序

"""
字典dict
# 统计长度,按key,value,items取值.可以索引取值,如果之不存在就创建新值
dict={'name':'max','age':'25','hobby':'game'}
dict['name']='xam'
print(dict) # {'name': 'xam', 'age': '25', 'hobby': 'game'}
布尔值
# true 或者false
集合set
# 集合是无序的,会自动去重.
# 1.求共同好友
s1={'max','jaxon','tony','jack'}
s2={'max','tim','jaxon','ada'}
print(s1&s2) # {'max', 'jaxon'}
 
# 2.求s1 独有的好友
s1={'max','jaxon','tony','jack'}
s2={'max','tim','jaxon','ada'}
print(s1-s2) # {'jack', 'tony'}
# 3.求s2独有好友
s1={'max','jaxon','tony','jack'}
s2={'max','tim','jaxon','ada'}
print(s2-s1) # {'ada', 'tim'}
# 4. 求两个人所有的好友
s1={'max','jaxon','tony','jack'}
s2={'max','tim','jaxon','ada'}
print(s2|s1) # {'jaxon', 'jack', 'ada', 'tony', 'max', 'tim'}
# 5.求两个各自独有的好友
s1={'max','jaxon','tony','jack'}
s2={'max','tim','jaxon','ada'}
print(s2^s1) # {'ada', 'jack', 'tim', 'tony'}
# 6. 父集 子集
s1={'max','jaxon','tony','jack'}
s2={'max','tim','jaxon','ada'}
print(s1<s2)  # False
 print(s1>s2) # False

# 如果要查看数据类型的内置方法可以用.句符号

 

 ---------------------------------------------------------------------------------------------------------

今日学习内容

"""
计算机是基于电工作的 电信号只有高低电平两种状态
也就是说计算机只认识两种状态 人为的定义为数字0和1即二进制
人类的字符与数字之间存在对应关系
相当于发电报彼此携带的密码本一样
"""
字符编码的发展:
"""
每个国家使用的语言都有相对应的编码本 
美国的ASCII码,中国的GB码,日本的shift_JIS码,韩国的Euc_kr码
内部都记录了自己国家的语言以及英文与数字的对应关系.
""" 
"""
直到unicode码的出现内部记录了各个国家的文字与数字之间的对应关系
而utf8是之前万国码的优化版本,也是现在默认使用的版本.
"""

# 如果文件出现了乱码,可以尝试切换字符编码.

编码与解码

编码
# 编码就是把人用的语言翻译成机器能看懂的语言
res = '阿富汗战争结束了'
res1 = res.encode('gbk')
print(res1)
解码
# 解码就是把机器看懂的语言翻译成人能看得懂的语言
res2 = res1.decode('gbk')
print(res2)
# b'\xb0\xa2\xb8\xbb\xba\xb9\xd5\xbd\xd5\xf9\xbd\xe1\xca\xf8\xc1\xcb'
# 阿富汗战争结束了

文件操作

# 第一种(推荐使用)
with open(文件路径,读写模式,字符编码) as 变量名:
    with子代码
# 第二种(不推荐使用)
变量名 = open(文件路径,读写模式,字符编码) 
一系列操作
变量名.colse()

 

 

 

 

 # 文件路径分为:相对路径(需要参考系) '123.txt'

        与绝对路径(不需要任何参考系) D:\8.16练习\123.txt

 #r为源字符

 通常\+n或者\+t会产生一些操作,我们可以在字符串前加r来取消转义

读写模式

"""
r  只读模式

1.文件路径如果不存在,会报错
2.如果存在 就打开可读取内容.
但是如果一次性打印多次,但结果只会出现一次,因为光标会随着最后一个字符结束用空格补齐
"""
"""
w   只写模式
1.如果文件路径不存在会自动创建.
2.如果文件路径存在会先清空原文件内容再记录填写内容,所以多用于新建文件
"""

with open(r'123.txt','w',encoding='utf8') as txt:
     txt.write('啦啦啦啦\n')
     txt.write('啦啦啦啦\n')
# 啦啦啦啦
  啦啦啦啦
"""
a  只追加模式
1.如果文件路径不存在会自动创建
2.文件路径存在会在尾部追加.

with open(r'123.txt','a',encoding='utf8') as txt:
     txt.write('哈哈哈哈')
     txt.write('哈哈哈哈')

光标会移动到文件末尾,可以在末尾追加内容
"""
# 内容优化

with open(r'aaa.txt', 'r', encoding='utf8') as f:
            for line in f:  # 一行行读取文件内容 能够避免内存爆炸
                 print(line)
# lines可以都多行

操作模式

"""
分为两种种操作模式
t模式:(文本模式) 
rt
wt
at
1.只能操作文本文件.
2.一定要encoding参数 (必须要有编码本)
3.读写都是以字符串为单位
"""
b模式(二进制模式)
rb 
wb
ab
 1.可以操作任意类型的文件
 2.由于已经是二进制模式所以不需要指定encoding参数
 3.读写都是以bytes(二进制)为单位
#作业1
l1=input('请输入拷贝文件路径:')
l2=input('请输入目的文件路径:')
with open(l1,'r',encoding='utf8') as f:
    l3= f.read()
with open(l2,'w',encoding='utf8') as f:
    f.write(l3)
#作业2
 print('注册')
    a1 = input('用户名:')
    b1 = input('密码:')
    c1 = a1+'|'+b1
    with open(r'abc.txt','a',encoding='utf8') as f1:
        f1.write(c1)
    print('注册成功!')
    print('登陆账号')
    a2 = input('用户名:')
    b2 = input('密码:')
    c2 = a2+'|'+b2
    with open(r'abc.txt','r',encoding='utf8') as f2:
        d = f2.read()
    if c2 in d:
        print('登陆成功!')
    else:
        print('登陆失败!')

 

这篇关于21.8.16学习记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!