我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python学习笔记之字典,元组,布尔类型和读写文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python学习笔记之字典,元组,布尔类型和读写文件

1.字典dict

不同于列表只能用数字获取数据,字典可以用任何东西来获取,因为字典通过键索引值,而键可以是字符串、数字、元组。

1.1 列表和字典的区别

things=["a","b","c","d"]   
print(things[1])   #只能用数字索引列表中的元素

things[1]="z"   #列表的替换
print(things[1])

things.remove("d")   #列表中删除元素

things
stuff={"name":"zed","age":39,"height":6*12+2}
print(stuff["name"])   #字典可用键索引值,键可以是字符串、也可以是数字
print(stuff["age"])
print(stuff["height"])

stuff["city"]="xiamen"  #字典中增加元素
stuff[1]="reading"      #键为数字
print(stuff["city"])
print(stuff[1])  

del stuff[1]  #字典中删除元素
del stuff["city"]
stuff
zed
39
74
xiamen
reading

{'name': 'zed', 'age': 39, 'height': 74}

1.2 字典示例

# 创建一个州名和州的缩写的映射
states={
    "oregon":"or",
    "florida":"fl",
    "california":"ca",
    "newyork":"ny",
    "michigan":"mi"
}

# 创建州的缩写和对应州的城市的映射
cities={
    "ca":"san francisco",
    "mi":"detroit",
    "fl":"jacksonville"
}

#添加城市
cities["ny"]="new york"
cities["or"]="portland"

# 输出州的缩写
print("-"*10)
print("michigan's abbreviation is:",states["michigan"])  #个别州的缩写
print("florida's abbreviation is:",states["florida"])

print("-"*10)
for state,abbrev in list(states.items()):  #所有州的缩写,语法解释见下方注释1
    print(f"{state} is abbreviated {abbrev}.")

# 输出州对应的城市
print("-"*10)
print("florida has:",cities[states["florida"]])  #个别州对应的城市

print("-"*10)
for abbrev,city in list(cities.items()): # 所有州的缩写
    print(f"{abbrev} has city {city}.")

#同时输出州的缩写和州对应的城市
print("-"*10)
for state,abbrev in list(states.items()):
    print(f"{state} state is abbreviated {abbrev}, and has city {cities[abbrev]}.")
    
print("-"*10)
def abbrev(state):   #注释4,定义函数,输入州名,输出州名的简写
    abbrev=states.get(state)
    if not abbrev:   #注释3
        print(f"sorry,it's {abbrev}.")
    else:
        print(f"{state} state is abbreviated {abbrev}.")

abbrev("florida")
abbrev("texas")

print("-"*10,"method 1")
city=cities.get("TX","Doesn't exist")
print(f"the city for the state 'TX' is:{city}.")  #注意'TX'需用单引号

print("-"*10,"method 2")  #定义函数,输入州名,输出州所在的城市
def city(state):
    city=cities.get(states.get(state))
    if not city:
        print(f"sorry,doesn't exist.")
    else:
        print(f"the city for the state {state} is:{city}.")
        
city("texas")
city("florida")
----------
michigan's abbreviation is: mi
florida's abbreviation is: fl
----------
oregon is abbreviated or.
florida is abbreviated fl.
california is abbreviated ca.
newyork is abbreviated ny.
michigan is abbreviated mi.
----------
florida has: jacksonville
----------
ca has city san francisco.
mi has city detroit.
fl has city jacksonville.
ny has city new york.
or has city portland.
----------
oregon state is abbreviated or, and has city portland.
florida state is abbreviated fl, and has city jacksonville.
california state is abbreviated ca, and has city san francisco.
newyork state is abbreviated ny, and has city new york.
michigan state is abbreviated mi, and has city detroit.
----------
florida state is abbreviated fl.
sorry,it's None.
---------- method 1
the city for the state 'TX' is:Doesn't exist.
---------- method 2
sorry,doesn't exist.
the city for the state florida is:jacksonville.

注释1

Python 字典 items() 方法以列表返回视图对象,是一个可遍历的key/value 对。

dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。

视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。

我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。

注释2

字典 (Dictionary)get()函数返回指定键的值,如果值不在字典中,返回默认值。

语法:dict.get(key, default=None),参数 key–字典中要查找的键,default – 如果指定键的值不存在时,返回该默认值。

注释3

if not 判断是否为NONE,代码中经常会有判断变量是否为NONE的情况,主要有三种写法:

第一种: if x is None(最清晰)

第二种: if not x

第三种: if not x is None

注释4 将字符串值传递给函数

def printMsg(str):
#printing the parameter
print str

printMsg(“Hello world!”)

#在输入字符串时,需要带引号

1.3 练习:写中国省份与省份缩写对应的字母代码

sx={
    "广东":"粤",
    "福建":"闽",
    "江西":"赣",
    "安徽":"皖"
}

sx["云南"]="滇"
sx["贵州"]="黔"
#定义函数,输入省份,输出省份缩写

def suoxie(province):
    suoxie=sx.get(province)
    if not suoxie:
        print(f"对不起,我还没在系统输入{province}省的缩写。")
    else:
        print(f"{province}省的缩写是:{suoxie}")

suoxie("广东")
suoxie("黑龙江")
广东省的缩写是:粤
对不起,我还没在系统输入黑龙江省的缩写。

2.元组tuple

元组类似于列表,内部元素用逗号分隔。但是元组不能二次赋值,相当于只读列表。

tuple=('runoob',786,2.23,'john',70.2)
tinytuple=(123,'john')

print(tuple[1:3])  #和list类似
print(tuple*2)
print(tuple+tinytuple)
(786, 2.23)
('runoob', 786, 2.23, 'john', 70.2, 'runoob', 786, 2.23, 'john', 70.2)
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

元组是不允许更新的:

tuple=('runoob',786,2.23,'john',70.2)
tuple[2]=1000
print(tuple)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-7-ae7d4b682735> in <module>
      1 tuple=('runoob',786,2.23,'john',70.2)
----> 2 tuple[2]=1000
      3 print(tuple)


TypeError: 'tuple' object does not support item assignment

3.布尔类型bool

True and True  #与运算
1==1 and 1==2
1==1 or 2!=1  # 或运算,!=表示不等于
not (True and False)   # 非运算
not (1==1 and 0!=1)

4.读写文件

close:关闭文件

read:读取文件内容,可将读取结果赋给另一个变量

readline:只读取文本文件的一行内容

truncate:清空文件

write(‘stuff’):给文件写入一些“东西”

seek(0):把读/写的位置移到文件最开头

4.1 用命令做一个编辑器

from sys import argv  #引入sys的部分模块argv(参数变量)

filename = "C:\\Users\\janline\\Desktop\\test\\euler笨办法学python"   #给自己新建的文件命名,注意文件地址要补双杠

print(f"we're going to erase {filename}.")  #格式化变量filename,并打印出来
print("if you don't want that, hit ctrl-c(^c).")
print("if you do want, hit return. ")

input("?")  # 输出"?",并出现输入框

print("opening the file...")
target=open(filename,'w')   # w表示以写的模式打开,r表示以读的模式打开,a表示增补模式,w+表示以读和写的方式打开,open(filename)默认只读

print("truncating the file. Goodbye!")
target.truncate()   #在变量target后面调用truncate函数(清空文件)

print("now I'm going to ask you for three lines.")

line1=input("line 1: ")   #输出"line1:",接收输入内容并存入变量line1中
line2=input("line 2: ")
line3=input("line 3: ") 

print("I'm going to write these to the file.")

target.write(line1)   ##在变量target后面调用write函数,写入变量line1中的内容,注意写入的内容需是英文
target.write("\n")  #  \n换行
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print("and finally, we close it.")
target.close()   #在变量target后面调用close函数,关闭文件
we're going to erase C:\Users\janline\Desktop\test\euler笨办法学python.
if you don't want that, hit ctrl-c(^c).
if you do want, hit return. 
?return
opening the file...
truncating the file. Goodbye!
now I'm going to ask you for three lines.
line 1: address name should be double slacked
line 2: see clearly for what problem happened
line 3: look for answers by searching
I'm going to write these to the file.
and finally, we close it.

用编辑器打开创建的文件,结果如下图:

在这里插入图片描述

4.2 练习写类似的脚本

使用read和argv来读取创建的文件:

filename="C:\\Users\\janline\\Desktop\\test\\笨办法学python\\test.txt"

txt=open(filename,'w+')

print("Let's read the file")
print("Let's write the file")

line1=input("line1: ")
line2=input("line2: ")

print("Let's write these in the file")
print("\n") 

txt.write(line1)
txt.write("\n")
txt.write(line2)
txt.write("\n")

print(txt.read())

txt.close()
Let's read the file
Let's write the file
line1: read and write file are complicated
line2: come on, it's been finished!
Let's write these in the file

打开文件结果如下:

在这里插入图片描述

4.3 用一个target.write()来打印line1、line2、line3

from sys import argv  #引入sys的部分模块argv(参数变量)

filename = "C:\\Users\\janline\\Desktop\\test\\euler笨办法学python"   #给自己新建的文件命名,注意文件地址要补双杠

print(f"we're going to erase {filename}.")  #格式化变量filename,并打印出来
print("if you don't want that, hit ctrl-c(^c).")
print("if you do want, hit return. ")

input("?")  # 输出"?",并出现输入框

print("opening the file...")
target=open(filename,'w')   # w表示以写的模式打开,r表示以读的模式打开,a表示增补模式,w+表示以读和写的方式打开,open(filename)默认只读

print("truncating the file. Goodbye!")
target.truncate()   #在变量target后面调用truncate函数(清空文件)

print("now I'm going to ask you for three lines.")

line1=input("line 1: ")   #输出"line1:",接收输入内容并存入变量line1中
line2=input("line 2: ")
line3=input("line 3: ") 

print("I'm going to write these to the file.")

target.write(line1+"\n"+line2+"\n"+line3+"\n")   #见注释

print("and finally, we close it.")
target.close()   #在变量target后面调用close函数,关闭文件
we're going to erase C:\Users\janline\Desktop\test\euler笨办法学python.
if you don't want that, hit ctrl-c(^c).
if you do want, hit return. 
?return
opening the file...
truncating the file. Goodbye!
now I'm going to ask you for three lines.
line 1: 1
line 2: 2
line 3: 3
I'm going to write these to the file.
and finally, we close it.

注释

Python 中的文件对象提供了 write() 函数,可以向文件中写入指定内容。该函数的语法格式:file.write(string)。其中,file 表示已经打开的文件对象;string 表示要写入文件的字符串

打开结果如下:

在这里插入图片描述

4.4 Q&A

1.为什么我们需要给open多赋予一个’w’参数

open()只有特别指定以后它才会进行写入操作。

open() 的默认参数是open(file,‘r’) 也就是读取文本的模式,默认参数可以不用填写。

如果要写入文件,需要将参数设为写入模式,因此需要用w参数。

2.如果你用w模式打开文件,那么你还需要target.truncate()吗

Python的open函数文档中说:“It will be truncated when opened for writing.”,也就是说truncate()不是必须的。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python学习笔记之字典,元组,布尔类型和读写文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录