安装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 math
a = 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 + 1
user_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_bmi
bmi1 = 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_name
self.age = cat_age
self.color = cat_color
cat1 = CuteCat("招财",2,"橘色")
print(f"小猫{cat1.name}今年{cat1.age}岁了,颜色是{cat1.color}")
显示结果
小猫招财今年2岁了,颜色是橘色
2、代码
class Student:
def __init__(self,student_name,student_no):
self.name = student_name
self.no = student_no
self.grades = {"语文": 0, "数学": 0, "英语": 0}
def set_grade(self,course,grade):
if course in self.grades:
self.grades[course] = grade
def 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 = name
self.sex = sex
self.eyes_num = 2
def 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 = False
def read(self):
print(self.name + "在看书")
class Cat(Animal):
def __init__(self,name,sex):
super().__init__(name,sex)
self.has_tail = True
def 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 = name
self.id = id
def 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_salary
def calculate_monthly_pay(self):
return self.monthly_salary
class PartTimeEmployee(Employee):
def __init__(self,name,id,daily_salary,work_days):
super().__init__(name,id)
self.daily_salary = daily_salary
self.work_days = work_days
def calculate_monthly_pay(self):
return self.daily_salary * self.work_days
zhangsan = 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 + price
return total_price
import unittest
from python1_demo import ShoppingList
class 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)