安装python和PyCharm
python下载地址:Download Python | Python.org
PyCharm下载地址:Download PyCharm: Python IDE for Professional Developers by JetBrains
print("丘桔麻麻");print("哈喽" + " 这是一串代码" + " 哈哈");print('She said "let\'s go"');print("我是第一行\n我是第二行");print();print("""锄禾日当午
汗滴禾下土
谁知盘中餐
粒粒皆辛苦""");
显示结果
变量
greet_chinese = "您好,吃了么? "
greet_english = "Yo, what's up, "
print(greet_chinese + "张三")
print(greet_english + "李四")
显示结果
数学运算
import matha = 1;
b = 9;
c = 20;
delta = b**2 - 4*a*c;
x1 = (-b + math.sqrt(delta))/(2*a);
x2 = (-b - math.sqrt(delta))/(2*a);
print(x1);
print(x2);
显示结果
注释
#这是一段注释
#不会执行
数据类型
字符串str、整数int、浮点数float、布尔类型bool(只有2个值:True和False,注意:首字母要大写,不能写成true和false)、空值类型NoneType(只有一种值为None,首字母也要大写)
交互模式
命令行模式:执行python文件
交互模式:一行一行执行,不需要print就可以看到返回结果
平时我们使用最多的是命令行模式,因为交互模式输入的所有指令都不会被保存
input
注意:input()函数的返回值是字符串类型,可以用 int() 转换为整数,也可以用float()转为为浮点数
条件语句
mood_index = int(input("对象今天的心情指数:"))
if mood_index >= 60:print("恭喜,今晚应该可以打游戏,去吧皮卡丘")print("(*^▽^*)")
else:print("为了自个儿小命,还是别打了")
逻辑运算
关键字:not、and、or
优先级:not >and>or
列表
注意:python的列表可以存放不同类型的值
代码:
shopping_list = ["键盘",True]
print(shopping_list)
shopping_list.append("鼠标")
print(shopping_list)
shopping_list.remove(True)
print(shopping_list)
print(shopping_list[0])
shopping_list[0] = "笔记本"
print(shopping_list)
print(len(shopping_list))
显示结果:
代码:
price = [933,560,20,1234]
max_price = max(price)
print(max_price)
min_price = min(price)
print(min_price)
sorted_price = sorted(price)
print(sorted_price)
显示结果:
字典
字典相当于java里面的map,可以用来存放键值对(key:value),其中key是不能变的
phone={"张三":"12300000000","李四":"56700000000"}
但是如果通讯录里面有2个张三,就是同时需要名字和年龄才能区分电话号码,列表又不能作为key(因为列表可变),咋办嘞?可以用元组tuple
# 元组(tuple)
user1 = ("张三",23)
user2 = ("张三",33)
元组和列表的区别:
1、元组用(),列表用[]
2、元组不可变,不能添加、删除元素;列表可变
用元组作为key:
phone = {("张三",23):"12300000000", ("张三",33):"12300000002", ("李四",44):"56700000000"}
字典的使用:
1、代码
age = {"小红":11, "小张":22, "小明":33, "小菜":44}
#增加一条数据
age["小華"] = 24
print(age)
#删除一条数据
del age["小明"]
print(age)
#修改一条数据
age["小张"] = 8
print(age)
#查询某个key是否存在
exist = "小明" in age
print(exist)
显示结果:
2、代码
age = {"小红":11, "小张":22, "小明":33, "小菜":44}
user = input("你想查谁的年龄?")
if user in age:print(user + "的年龄为:" + str(age[user]))
else:print("查无此人")print("当前字典总共有" + str(len(age)) + "条数据")
显示结果:
for循环
1、代码
temperature_dict = {"Q001":36.4,"Q002":38.2,"Q003":36.9,"Q004":37.0,"Q005":37.6,"Q006":38.0}
#temperature_dict.keys() 所有key
#temperature_dict.values() 所有value
#temperature_dict.items() 所有键值对
#找出发烧的员工
for temperature_tuple in temperature_dict.items():staff_id = temperature_tuple[0]temperature = temperature_tuple[1]if temperature >= 38:print(staff_id + "发烧了,体温为 " + str(temperature) + " 度")
运行结果:
Q002发烧了,体温为 38.2 度
Q006发烧了,体温为 38.0 度
2、代码
#求1-100奇数和
total = 0
#注意:range的区间是左闭右开,即for i in rage(1,5)时,i的取值为1,2,3,4
for i in range(1,100,2): total = total + i
print(total)
运行结果:
2500
while循环
print("哈喽呀~我是一个求平均值的程序")
user_input = input("请输入数字(完成所有数字输入之后,请输入q终止程序):")
total = 0
count = 0
while user_input != "q":total = total + int(user_input)count = count + 1user_input = input("请输入数字(完成所有数字输入之后,请输入q终止程序):")
average = total/count
print("平均值为:" + str(average))
运行结果
格式化字符串
1、代码
people = ["张三","李四","王五","赵六","小红","小花","小明"]
year = "虎"
for name in people:message = "祝{0}同学{1}年快乐".format(name,year)print(message)
运行结果:
祝张三同学虎年快乐
祝李四同学虎年快乐
祝王五同学虎年快乐
祝赵六同学虎年快乐
祝小红同学虎年快乐
祝小花同学虎年快乐
祝小明同学虎年快乐
2、可以把之前的参数下标,替换为参数值
people = ["张三","李四","王五","赵六","小红","小花","小明"]
year = "虎"
for name in people:message = "祝{this_name}同学{this_year}年快乐".format(this_name = name, this_year = year)print(message)
3、也可以给字符串加前缀 f ,花括号中的内容会被直接求值
people = ["张三","李四","王五","赵六","小红","小花","小明"]
year = "虎"
for name in people:message = f"祝{name}同学{year}年快乐"print(message)
4、还可以对数字进行格式化
代码:
score_dict = {"张三":33.333,"李四":44.4444,"王五":55.555555,"赵六":66.6666666}
for name,score in score_dict.items():message = "{0}同学你好,你的分数为:{1:.2f}".format(name,score)print(message)
虽然score是浮点数,但是用format方法的时候,不需要手动转换为字符串,还可以用.nf指定保留几位小数,比如.2f就是指定保留2为小数
运行结果:
张三同学你好,你的分数为:33.33
李四同学你好,你的分数为:44.44
王五同学你好,你的分数为:55.56
赵六同学你好,你的分数为:66.67
函数
1、代码
#计算圆面积
def area(radius):area = 3.14 * (radius**2)print(area)area(10)
area(100)
显示结果:
314.0
31400.0
2、代码
#计算BMI指数:BMI = 体重/(身高**2)
def calculate_BMI(height, weight):user_bmi = weight/(height**2)if user_bmi <= 18.5:print("你的BMI分类为:偏瘦")elif 18.5 < user_bmi <= 25:print("你的BMI分类为:正常")elif 25 < user_bmi <= 30:print("你的BMI分类为:偏胖")elif user_bmi > 30:print("你的BMI分类为:肥胖")return user_bmibmi1 = calculate_BMI(1.66, 60)
print(str(bmi1))
bmi2 = calculate_BMI(1.90, 60)
print(str(bmi2))
显示结果
你的BMI分类为:正常
21.773842357381334
你的BMI分类为:偏瘦
16.62049861495845
引入模块
from statistics import *
#求中位数
print(median([19,-5,-100,99,188]))
显示结果
19
创建类
1、代码
class CuteCat:def __init__(self,cat_name,cat_age,cat_color):self.name = cat_nameself.age = cat_ageself.color = cat_colorcat1 = CuteCat("招财",2,"橘色")
print(f"小猫{cat1.name}今年{cat1.age}岁了,颜色是{cat1.color}")
显示结果
小猫招财今年2岁了,颜色是橘色
2、代码
class Student:def __init__(self,student_name,student_no):self.name = student_nameself.no = student_noself.grades = {"语文": 0, "数学": 0, "英语": 0}def set_grade(self,course,grade):if course in self.grades:self.grades[course] = gradedef print_grades(self):print(f"{self.name}同学(学号:{self.no})的成绩如下:")for course in self.grades:print(f"{course}成绩为{self.grades[course]}")zhang = Student("张三",1003)
print(f"{zhang.name}同学的学号为:{zhang.no}")
zhang.set_grade("语文",55)
zhang.set_grade("数学",66)
zhang.set_grade("英语",77)
zhang.print_grades()
显示结果
张三同学的学号为:1003
张三同学(学号:1003)的成绩如下:
语文成绩为55
数学成绩为66
英语成绩为77
继承
1、代码
class Animal:def __init__(self,name,sex):self.name = nameself.sex = sexself.eyes_num = 2def breathe(self):print(self.name + "在呼吸")def shit(self):print(self.name + "在拉屎")class Human(Animal):def __init__(self,name,sex):super().__init__(name,sex)self.has_tail = Falsedef read(self):print(self.name + "在看书")class Cat(Animal):def __init__(self,name,sex):super().__init__(name,sex)self.has_tail = Truedef srcath_sofa(self):print(self.name + "在抓沙发")def shit(self):print(self.name + "在沙发上拉屎")cat1 = Cat("招财","男")
print(f"{cat1.name}小猫咪,是{cat1.sex}的,有{cat1.eyes_num}只眼睛,是否有尾巴:{cat1.has_tail}")
cat1.breathe()
cat1.srcath_sofa()
cat1.shit()human1 = Human("张三","男")
print(f"{human1.name}小朋友,是{human1.sex}的,有{human1.eyes_num}只眼睛,是否有尾巴:{human1.has_tail}")
human1.breathe()
human1.read()
human1.shit()
显示结果
招财小猫咪,是男的,有2只眼睛,是否有尾巴:True
招财在呼吸
招财在抓沙发
招财在沙发上拉屎
张三小朋友,是男的,有2只眼睛,是否有尾巴:False
张三在呼吸
张三在看书
张三在拉屎
2、代码
class Employee:def __init__(self,name,id):self.name = nameself.id = iddef print_info(self):print("姓名:" + self.name)print("工号:" + str(self.id))class FullTimeEmployee(Employee):def __init__(self,name,id,monthly_salary):super().__init__(name,id)self.monthly_salary = monthly_salarydef calculate_monthly_pay(self):return self.monthly_salaryclass PartTimeEmployee(Employee):def __init__(self,name,id,daily_salary,work_days):super().__init__(name,id)self.daily_salary = daily_salaryself.work_days = work_daysdef calculate_monthly_pay(self):return self.daily_salary * self.work_dayszhangsan = FullTimeEmployee("张三","1001",8500)
zhangsan.print_info()
print(zhangsan.calculate_monthly_pay())
lisi = PartTimeEmployee("李四","1002",160,22)
lisi.print_info()
print(lisi.calculate_monthly_pay())
显示结果
姓名:张三
工号:1001
8500
姓名:李四
工号:1002
3520
文件
文件模式 | 作用 |
r(read) | 只读 |
w(write) | 只写 |
a(append) | 追加 |
r+ | 可读可写 |
1、读文件
读取文件的方法 | 作用 |
read | 返回全部文件内容的字符串 |
readline | 返回一行文件内容的字符串 |
readlines | 返回全部文件内容组成的列表 |
在桌面创建一个文件.txt
1)、read()
file = open("C:\\Users\\Administrator\\Desktop\\文件.txt","r",encoding="utf-8")
print(file.read()) #会读全部的文件内容,并打印
print(file.read()) #会读空字符串,并打印
显示结果
在文件特别大的情况下,最好不要用read(),因为读出来的内容会占用很大的内存,甚至把内存给爆了。如果你不想一次性读完整个文件,可以给read()传一个数字,表示读多少字节,下一次调用read()的时候,就会从那个位置继续往下读
file = open("C:\\Users\\Administrator\\Desktop\\文件.txt","r",encoding="utf-8")
print(file.read(8)) #会读第1-8个字节的文件内容(换行符也算一个字节)
print(file.read(8)) #会读第9-16个字节的文件内容
显示结果
2)、readline()
file = open("C:\\Users\\Administrator\\Desktop\\文件.txt","r",encoding="utf-8")
print(file.readline()) #readline()只会读一行的内容,它会根据换行符来判断,什么时候算一行结尾
print(file.readline()) #继续读下一行
显示结果
readline()一般和while循环一起用
file = open("C:\\Users\\Administrator\\Desktop\\文件.txt","r",encoding="utf-8")
line = file.readline()
while line != "":print(line)line = file.readline()
显示结果
3)、readlines()
file = open("C:\\Users\\Administrator\\Desktop\\文件.txt","r",encoding="utf-8")
lines = file.readlines() #readlines()会读取全部文件的内容,并把每行作为列表元素返回
print(lines)
for line in lines:print(line)
显示结果
2、关闭文件
1)close()
file = open("C:\\Users\\Administrator\\Desktop\\文件.txt","r",encoding="utf-8")
print(file.read())
file.close() #关闭文件,释放资源,每次完成文件读写操作后,都要关闭文件
2)with
with open("C:\\Users\\Administrator\\Desktop\\文件.txt","r",encoding="utf-8") as file:print(file.read())
3、写文件
#如果文件不存在,程序就会根据路径和文件名,自动创建一个文件
#用w模式写文件的话,如果文件已经存在,会把原本的文件内容情况
file = open("C:\\Users\\Administrator\\Desktop\\写文件.txt","w",encoding="utf-8")
file.write("假如有一天我变得很有钱\n")
file.write("做的第一件事情不是去环游世界")
file.close()
显示结果
4、追加文件
a模式和w模式一样,如果文件不存在,会根据路径和文件名再创建一个文件
#如果不行把原本文件中的内容清空,可以用a模式(append)表示追加
file = open("C:\\Users\\Administrator\\Desktop\\写文件.txt","a",encoding="utf-8")
file.write("在原来的文件中追加一句")
file.close()
显示结果
5、同时支持读写文件
#r+模式可以同时支持读写文件
file = open("C:\\Users\\Administrator\\Desktop\\写文件.txt","r+",encoding="utf-8")
print(file.read())
file.write("hello")
file.close()
运行结果
异常
try:user_height = float(input("请输入你的身高(单位:m) ->"))user_weight = float(input("请输入你的体重(单位:kg)->"))user_BMI = user_weight/(user_height**2)
except ValueError: #产生值错误时执行print("请输入数字")
except ZeroDivisionError: #产生除零错误时执行print("身高不能为0")
except: #产生其他错误时执行print("发生了未知错误,请重新运行程序")
else: #没有错误时执行print("你的BMI指数为:" + str(user_BMI))
finally: #不管有没有发生错误都执行print("程序运行结束")
测试
1、代码
def my_adder(x,y):return x+y
import unittest
from python1_demo import my_adder #from 文件名 import 方法名class TestMyAdder(unittest.TestCase): #继承unittest.TestCase类,并且类名以Test开头def test_positive_with_positive(self): #方法名以test_开头self.assertEqual(my_adder(5,3),8)def test_negative_with_positive(self):self.assertEqual(my_adder(-5,3),-2)
#这个命令,会自动搜索所有继承了unittest.TestCase类的子类,并运行它们所有以test_开头的方法
python -m unittest
2、代码
class ShoppingList:#初始化购物清单,shopping_list是字典类型,包含商品名和对应价格#例子:{"牙刷":5,"沐浴露":15,"电池":7}def __init__(self,shopping_list):self.shopping_list = shopping_list#返回购物单上有多少个商品def get_item_count(self):return len(self.shopping_list)#返回购物单上的商品总价def get_total_price(self):total_price = 0;for price in self.shopping_list.values():total_price = total_price + pricereturn total_price
import unittest
from python1_demo import ShoppingListclass TestShoppintList(unittest.TestCase):def setUp(self):self.shopping_list = ShoppingList({"牙刷":5,"沐浴露":15,"电池":7})def test_get_item_count(self):self.assertEqual(self.shopping_list.get_item_count(),3)def test_get_total_price(self):self.assertEqual(self.shopping_list.get_total_price(),27)