1 字符串相关函数
2 计算符号
3 import this #Python之禅
4 列表
特定顺序排列元素组成;元素间可无关系(不必同类型);索引从0开始;-1表示最后一个元素;
# 依据冒号和缩进 for var in list: print(var)
# 1 2 3 4 ;range(m,n) 最后m到n-1;
print(value)
print(var_list)
#从2开始,不断加2,一直达到或者超过11
squares=[value**2 for value in range(1,11)] print(squares) # 输出 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
var_list=["nihao","nihaoa","nizhendehao"] "nihao" in var_list "nibuhao" not in var_list
5 元组
dimensions=(200,50) #元组使用圆括号 print(dimensions[0])
dimensions[0]=250 # 这个是错误的 dimensions=(250,50) # 这个是合法的
6 字典
var_dic={'color':'green','point':5} # 创建字典 print(var_dic['color'])
var_kong_dic={} # 创建一个空的字典 var_kong_dic['nihao']="nihao" # 在字典中添加键值对 var_kong_dic['nibuhao']="nibuhao" print(var_kong_dic)
var_kong_dic['nihao']="How are you?" # 修改值 print(var_kong_dic)
del var_kong_dic['nibuhao'] #删除键值对 print(var_kong_dic)
point_value=var_kong_dic.get('point',"No point value assigned") #直接打印字典不存在键值报错,get不存在时返回第二个参数;没有指定第二个参数返回None print(point_value)
# 添加几个值做演示 var_kong_dic['cnihaos']="nihao"#在字典中添加键值对 var_kong_dic['anihaoss']="nihao"#在字典中添加键值对 for k,v in var_kong_dic.items(): print("Key:"+k) print("Value:"+v)
print(var_kong_dic.keys()) print(type(var_kong_dic.keys()))
for name in sorted(var_kong_dic.keys()): print(name)
for var_values in set(var_kong_dic.values()) print(var_values)
# 集合 不会以特定的顺序存储元素 var_jihe={'python','java','C#'} print(var_jihe) 字典 列表 alien_0={'color':'green','points':5} alien_1={'color':'red','points':10} alien_2={'color':'yellow','points':15} aliens=[alien_0,alien_1,alien_2] print(aliens)
7 函数相关
message=input("Pleaseinputsomething:") print(message) # input获取的都是字符串类型
age=input("Howoldareyou?\n") print(type(age)) print(":"+age) age=int(age) # 强制类型转化 print(type(age)) print(":"+str(age)) # 输入字符串+数字会报错,所以还需要再来一次类型转换
形参中的 * 让Python创建一个空元组(不可变),并将收到的所有值都封装在这个元组中、
defmake_pizza(*toppings): """"打印顾客所点的所有配料""" print(toppings) print(type(toppings)) make_pizza('peperoni') make_pizza('mushrooms','greenpepers','extracheese')
defbuild_profile(first,last,**user_info): """创建一个字典,其中包含我们知道的有关用户的一切""" user_info['first_name']=first user_info['last_name']=last returnuser_info user_profile=build_profile('albert','einstein',location='princeton',field='physics') print(user_profile)
8 读取/写入 文件
#原文件中的换行会被读取,但是打印末尾会多一个空行,因为read() 到达文件末尾时会返回一个空字符串,而将这个空字符串显示出来就是一个空行,如果要去除空行,就在字符串末尾加一个 rstrip() with open("pi.txt") as file_object: contents=file_object.read() print(contents)
#逐行读取每行末尾都会有一个换行符,所以需要加一个rstrip去除 with open("pi.txt") as file_object: for line in file_object: print(line.rstrip())
with open("pi.txt") as file_object: lines=file_object.readlines() print(type(lines)) print(lines) print("\n") for line in lines: print(line.rstrip())
# 这样会覆盖掉原文件中的内容,打开文件时的w参数,a 附加模式(在文件末尾添加不会覆盖原内容),r+读写模式,省略参数默认r 只读模式 with open("pi.txt",'w') as file_object: file_object.write("I love programming.") with open("pi.txt",'a') as file_object: file_object.write("\nI love programming,too.")
import json numbers=[2,3,4,5,6,9] # 存储 filename='numbers.json' with open(filename,'w') as f: json.dump(numbers,f) f.close() # 读取 file_name2='numbers.json' #异常处理 try: with open(file_name2,'r') as f: read_number=json.load(f) except FileNotFoundError: print("The file is not found!") else: print(read_number) print(type(read_number))
9 测试
def get_formatted_name(first,last,middle=''): """形参中指定默认值得形参 middle只能放在最后""" if middle: full_name=f"{first}.{middle}.{last}" else: full_name=f"{first}.{last}" return full_name
import unittest # 导入单元测试 from name_function import get_formatted_name class NameTestCase(unittest.TestCase): """继承 unittest.TestCase""" def test_first_last_name(self): """方法名必须test打头,这样才能自动运行""" formaated_name=get_formatted_name("jone","json") self.assertEqual(formaated_name,"jone.json") """断言方法""" def test_test_first_last_middle_name(self): formatteed_name=get_formatted_name("A","B","C") self.assertEqual(formatteed_name,"A.B.C") # 形参顺序不对会报错的 if __name__=='__main__': unittest.main()
class AnonymousSurvey: """构造函数""" def __init__(self,question): """存储 问题和 答案的变量""" self.question=question self.responses=[] """显示调查问卷""" def show_question(self): print(self.question) """存储单份调查问卷""" def store_response(self,new_response): self.responses.append(new_response) """显示所有答案""" def show_results(self): print("Survey Results:") for var_response in self.responses: print(f"-{var_response}")
# 导入单元测试 import unittest # 导入测试的类文件 from survey import AnonymousSurvey class TestAnonymousSurvey(unittest.TestCase): """使用setUp函数 创建一个所有方法都可以使用的类和答案列表""" def setUp(self): question="What language did you first learn to speak?" self.my_survey=AnonymousSurvey(question) self.responses=['English','Chinese','Janpanese'] def test_store_single_reponse(self): self.my_survey.store_response(self.responses[0]) self.assertIn(self.responses[0],self.my_survey.responses) def test_store_three_reponses(self): for reponse in self.responses: self.my_survey.store_response(reponse) for reponse in self.responses: self.assertIn(reponse, self.my_survey.responses) if __name__=='__main__': unittest.main()