yr_01_算数运算符
print ( 10 + 10 )
print ( 10 - 20 )
print ( 10 * 20 )
print ( 10 / 20 )
print ( 9 // 2 )
print ( 9 % 2 )
print ( 2 ** 13 )
print ( "_" * 10 )
print ( "张" + "三" )
"""
20
-10
200
0.5
4
1
8192
__________
张三
"""
"""
乘方优先级最高
然后是乘、除、取余、取整
最后是加减
"""
print ( 2 + 3 * 5 )
print ( ( 2 + 3 ) * 5 )
yr_02_赋值
qq_number = "1234567"
qq_password = "1234"
print ( qq_number, qq_password)
price = 8.5
weight = 7.5
money = price * weight
print ( money)
yr_03_变量类型
"""
在python中,定义变量时是不需要指定类型的
在运行时,解释器会根据赋值右侧的数据自动推测出数据准确类型
变量类型:
数字型:int、float、bool(True、False)、complex
非数字型:字符串、列表、元组、字典
"""
name = "小明"
age = 18
gender = True
height = 1.75
weight = 75
print ( type ( name) , type ( age) , type ( gender) , type ( height) , type ( weight) )
yr_04_常用函数
password = input ( "请输入qq密码:" )
print ( password, type ( password) )
print ( int ( "123" ) , type ( int ( "123" ) ) )
print ( float ( "123.1" ) , type ( float ( "123.1" ) ) )
price = float ( input ( "苹果的单价:" ) )
weight = float ( input ( "苹果的重量:" ) )
money = price * weight
print ( money)
yr_05_格式化输出
"""
print输出文字时想要输出数据需要使用格式化字符串
%s 字符串
%d 有符号十进制整数. %06d表示六位或六位以上整数输出
%f 浮点数。%.02f表示小数点后两位
%% 输出%
"""
name = "大明"
print ( "我的名字叫 %s,请多多关照!" % name)
student_no = 23413425436
print ( "我的学号是 %06d" % student_no)
price = 9.2
weight = 5.4
money = price * weight
print ( "苹果单价 %.02f 元/斤,购买了 %.02f 斤,需要支付 %.02f 元" % ( price, weight, money) )
scale = 0.254532
print ( "数据比例是%.02f%%" % ( scale * 100 ) )
yr_06_关键字
"""
python 内置关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if',
'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return',
'try', 'while', 'with', 'yield']
"""
import keyword
print ( keyword. kwlist)
"""
标识符是区分大小写的
"""
yr_07_if判断
"""
if 条件1:
条件1成立时,要做的事情
.........
elif 条件2:
条件1成立时,要做的事情
.........
else:
以上条件不成立时,要做的事情
.........
运算符判断 == != > < >= <=
# 用ctrl/添加删除注释
"""
age = 51
if age >= 18 :
print ( "你已经成年,欢迎进网吧happy" )
print ( "欢迎欢迎" )
print ( "执行程序" )
age = int ( input ( "请输入年龄:" ) )
if age >= 18 :
print ( "你已经成年,欢迎进网吧happy" )
else :
print ( "如果未满18岁,赶紧回家写作业吧" )
holiday_name = '生日'
if holiday_name == '情人节' :
print ( '买玫瑰,看电影' )
elif holiday_name == '平安夜' :
print ( '买苹果,吃大餐' )
elif holiday_name == '生日' :
print ( '买蛋糕' )
else :
print ( '每天都是节日啊' )
has_ticket = True
knife_length = 10
if has_ticket:
print ( "车票检查通过,准备进行安检" )
if knife_length > 20 :
print ( "您携带的刀太长了,有%d公分!" % knife_length)
print ( "不允许上车" )
else :
print ( "安检通过,祝您旅途愉快" )
else :
print ( "请先买票." )
yr_08_逻辑运算符
"""
逻辑运算 and or not
"""
import random
age = 1200
if ( age >= 0 ) and ( age <= 120 ) :
print ( "年龄正确。" )
else :
print ( "年龄不正确。" )
python_score = 55
c_score = 65
if ( python_score > 60 ) or ( c_score > 60 ) :
print ( "考试通过。" )
else :
print ( "考试成绩不合格。" )
is_emplyee = True
if not is_emplyee:
print ( "非本公司员工,禁止入内" )
random. randint( 1 , 3 )
yr_09_while循环
"""
编程流程:顺序,分支,循环
初始条件设置 -- 通常是重复执行的 计数器
while 条件:
条件满足时,要做的代码
。。。。。。
处理条件(计数器+1)
赋值运算符 =、+=、-=、*=、/=、//=、%=、**=
转义字符 \t,\n,\\.\"
"""
i = 0
while i < 5 :
print ( "hello python" )
i += 1
print ( "观察一下循环结束后i的数值为%d。" % i)
result = 0
i = 0
while i <= 100 :
result += i
i += 1
print ( "0-100之间的数字求和内容 = %d" % result)
result = 0
i = 0
while i <= 100 :
if i % 2 == 0 :
result += i
i += 1
print ( "0-100之间的偶数求和内容 = %d" % result)
i = 0
while i < 10 :
if i == 3 :
break
print ( i)
i += 1
i = 0
while i < 10 :
if i > 3 :
i += 1
continue
print ( i)
i += 1
"""
转义字符
\t 在控制台数据之间增加制表符,使数据对齐
\n 在控制台输出一个换行符
\r 回车、\\ 输出\符号、\"输出”符号
"""
i = 1
while i <= 9 :
j = 1
while j <= i:
print ( "%d * %d = %d" % ( j, i, i * j) , end= "\t" )
j += 1
print ( "" )
i += 1
"""
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
"""
yr_10_函数
"""
定义函数的语法,增加函数注释,形参,实参,返回值
def 函数名():
函数封装的代码
.........
"""
def sum_numbers ( num) :
if num == 1 :
return 1
temp = sum_numbers( num- 1 ) + num
return temp
print ( sum_numbers( 3 ) )
yr_11_函数调用(一)
def print_line ( char, times) :
"""打印多行分割线
:param char: 分割线使用分割字符
:param times: 分隔符重复次数
"""
print ( char * times)
def print_lines ( char, times) :
i = 0
while i < 5 :
print_line( char, times)
i += 1
name = "黑马程序员"
yr_11_函数调用(二)
import yr_11_1
yr_11_1. print_line( "-" , 50 )
yr_11_1. print_lines( "*" , 40 )
print ( yr_11_1. name)
yr_12_列表
"""
非数字型:列表、元祖、字典、字符串
列表list,存储一串信息(有序的数据)
用[]定义列表,中间数据之间用逗号分隔
列表的索引从0开始
列表常用操作11个方法
取值和取索引、修改、增加数据、删除数据、列表统计方法、列表排序方法、迭代遍历列表
"""
namelist = [ "lisi" , "zhangsan" , "wangwu" ]
temp_list = [ "孙悟空" , "朱儿歌" ]
print ( namelist[ 2 ] )
print ( namelist. index( "lisi" ) )
namelist[ 0 ] = 'zhaoliu'
namelist. append( "王小二" )
namelist. insert( 1 , "小美眉" )
namelist. extend( temp_list)
namelist. remove( "wangwu" )
namelist. pop( 3 )
del namelist[ 1 ]
print ( namelist)
list_len = len ( namelist)
print ( "列表中包含的元素个数:%d" % list_len)
count = namelist. count( "zhangsan" )
print ( "列表zhangsan的个数:%d" % count)
num_list = [ 6 , 8 , 4 , 1 , 10 ]
for my_name in namelist:
print ( "我的名字叫:%s" % my_name)
yr_13_元组
"""
非数字型:列表、元祖、字典、字符串
元组tuple,存储一串不同信息数据序列,不能修改
用()定义元组,中间数据之间用逗号分隔
元组的索引从0开始
取值和取索引、元组统计方法、元组循环遍历、元组赋值
"""
info_tuple = ( "张三" , 18 , 1.75 )
print ( info_tuple[ 0 ] )
print ( info_tuple. index( 18 ) )
print ( info_tuple. count( "张三" ) )
print ( len ( info_tuple) )
for my_info in info_tuple:
print ( my_info)
a = 10
b = 20
a, b = b, a
yr_14_字典
"""
非数字型:列表、元祖、字典、字符串
字典dict,存储一串信息(无序的数据)
用{}定义字典
字典用键值对存储数据,键和值之间使用:分隔,键值对之间用逗号分隔。
取值、修改、增加数据、删除数据、统计方法、合并字典、删除字典、迭代遍历字典
"""
xiaoming_dict = { "name" : "小明" ,
"age" : 18 ,
"gender" : True ,
"height" : 1.75 ,
"weight" : 75.6 }
print ( xiaoming_dict)
print ( xiaoming_dict[ "name" ] )
xiaoming_dict[ "money" ] = 10000
xiaoming_dict[ "age" ] = 33
print ( xiaoming_dict)
xiaoming_dict. pop( "name" )
print ( xiaoming_dict)
print ( len ( xiaoming_dict) )
temp_dict = { "time" : 7 ,
"age" : 2 }
xiaoming_dict. update( temp_dict)
print ( xiaoming_dict)
for k in xiaoming_dict:
print ( "%s-%s" % ( k, xiaoming_dict[ k] ) )
card_list = [
{ "name" : "张三" ,
'qq' : "12345" ,
"phone" : "110" } ,
{ "name" : "李四" ,
'qq' : "54321" ,
"phone" : "11089" }
]
for card_info in card_list:
print ( card_info)
yr_15_字符串
"""
非数字型:列表、元祖、字典、字符串
字符串str,存储一串文本信息
用""或''定义字符串 # '我的外号是"大西瓜"'
字符串的索引计数是从0开始的
取值、修改、增加数据、删除数据、统计方法、迭代遍历字符串
"""
str1 = "hello python"
print ( str1[ 6 ] )
for char in str1:
print ( char, end= '-' )
print ( "" )
print ( len ( str1) )
print ( str1. count( "o" ) )
print ( str1. index( "o" ) )
space_str = " \t\n\r"
print ( space_str. isspace( ) )
num_str = '1'
print ( num_str. isnumeric( ) )
print ( num_str. isdecimal( ) )
print ( num_str. isdigit( ) )
hello_str = "hello world"
print ( hello_str. startswith( "h" ) )
print ( hello_str. endswith( "world" ) )
print ( hello_str. find( "llo" ) )
print ( hello_str. replace( "world" , "python" ) )
poem = [ "\t\n登鹳雀楼" ,
"王之涣" ,
"白日依山尽" ,
"黄河入海流\t\n" ,
"欲穷千里目" ,
"更上一层楼" ]
for poem_str in poem:
poem_str= poem_str. strip( )
print ( "|%s|" % poem_str. center( 10 , " " ) )
poem = "登鹳雀楼\t王之涣\t白日依山尽\t黄河入海流\t\n欲穷千里目\t更上一层楼\t"
poem_list = poem. split( )
print ( poem_list)
print ( " " . join( poem_list) )
num = "0123456789"
print ( num[ 2 : 6 ] )
print ( num[ 2 : ] )
print ( num[ : 6 ] )
print ( num[ : ] )
print ( num[ : : 2 ] )
print ( num[ 1 : : 2 ] )
print ( num[ 2 : - 1 ] )
print ( num[ - 2 : ] )
print ( num[ : : - 1 ] )
yr_16_for循环
"""
python 内置有函数 len、del、max、min
字符串、列表、元组都能进行切片,字典不能进行切片
+ 可以合并列表、元组、字符串
* 可以重复列表、元组、字符串
in/not in 判断列表、元组、字符串、字典(key)中的元素是否存在/是否不存在
"""
for num in [ 1 , 2 , 3 ] :
print ( num)
if num == 2 :
break
else :
print ( '会执行吗?' )
print ( "循环结束" )
yr_17_toos
card_tools = [ ]
def show_menu ( ) :
"""显示菜单"""
print ( "*" * 50 )
print ( "欢迎使用【名片管理系统】 V 1.0" )
print ( "" )
print ( "1. 新增名片" )
print ( "2. 显示全部" )
print ( "3. 查询名片" )
print ( "" )
print ( "0. 退出系统" )
print ( "*" * 50 )
def new_card ( ) :
"""新增名片"""
print ( '新增名片' )
name_str = input ( "请输入姓名:" )
phone_str = input ( "请输入电话:" )
qq_str = input ( "请输入qq;" )
email_str = input ( "请输入邮箱:" )
card_dict = {
"name" : name_str,
"phone" : phone_str,
"qq" : qq_str,
"email" : email_str
}
card_tools. append( card_dict)
def show_all ( ) :
"""显示所有名片"""
print ( '-' * 50 )
print ( "显示所有名片" )
if len ( card_tools) == 0 :
print ( "当前没有任何名片记录,请使用新增功能添加名片" )
else :
for name in [ "姓名" , "电话" , "QQ" , "邮箱" ] :
print ( name, end= "\t\t" )
print ( "" )
print ( "=" * 50 )
for i in card_tools:
print ( "%s\t\t%s\t\t%s\t\t%s\t\t" % ( i[ "name" ] , i[ "phone" ] , i[ "qq" ] , i[ "email" ] ) )
def search_card ( ) :
"""搜索名片"""
print ( "搜索名片" )
find_name = input ( "请输入要搜索的姓名:" )
for card_dict in card_tools:
if card_dict[ "name" ] == find_name:
for name in [ "姓名" , "电话" , "QQ" , "邮箱" ] :
print ( name, end= "\t\t" )
print ( "" )
print ( "%s\t\t%s\t\t%s\t\t%s\t\t" % ( card_dict[ "name" ] , card_dict[ "phone" ] , card_dict[ "qq" ] , card_dict[ "email" ] ) )
deal_card( card_dict)
break
else :
print ( "抱歉没有找到 %s" % find_name)
def deal_card ( find_dict) :
"""查找指定名片
:param find_dict:
"""
print ( find_dict)
action_str = input ( "请选择要执行的操作 [1] 修改 [2] 删除 "
"[0] 返回上级菜单" )
if action_str == "1" :
find_dict[ "name" ] = input_card_info( find_dict[ "name" ] , "姓名;" )
find_dict[ "phone" ] = input_card_info( find_dict[ "phone" ] , "电话;" )
find_dict[ "qq" ] = input_card_info( find_dict[ "qq" ] , "QQ;" )
find_dict[ "email" ] = input_card_info( find_dict[ "email" ] , "邮箱;" )
print ( "修改名片成功" )
elif action_str == "2" :
card_tools. remove( find_dict)
print ( "删除名片成功" )
def input_card_info ( dict_value, tip_message) :
"""输入名片信息
:param dict_value: 字典中原有的值
:param tip_message: 输入文档提示
:return: 如果修改了则返回新值,否则返回原有值
"""
result_str = input ( tip_message)
if len ( result_str) > 0 :
return result_str
else :
return dict_value
yr_17_名片管理系统
import yr_17_toos
while True :
yr_17_toos. show_menu( )
action_str = input ( "请选择希望执行的操作:" )
print ( "您选择的操作是【%s】" % action_str)
if action_str in [ "1" , "2" , "3" ] :
if action_str == "1" :
yr_17_toos. new_card( )
elif action_str == "2" :
yr_17_toos. show_all( )
else :
yr_17_toos. search_card( )
elif action_str == "0" :
print ( "欢迎再次使用【名片管理系统】" )
break
else :
print ( "您输入的不正确,请重新选择" )
yr_18_全局变量和局部变量
num = 10
def demo1 ( ) :
num = 99
print ( "打印num的值:%d" % num)
def demo2 ( ) :
global num
num = 50
print ( "打印num的值:%d" % num)
def demo3 ( ) :
print ( "打印num的值:%d" % num)
demo1( )
demo2( )
demo3( )
yr_19_多值参数
def demo ( num, * args, ** kwargs) :
"""
:param num: 数字
:param args: 元组
:param kwargs: 字典
"""
print ( num)
print ( args)
print ( kwargs)
demo( 1 , 3 , 2 , name= "小明" , age= 18 )
"""
1
(3, 2)
{'name': '小明', 'age': 18}
"""
def sum_numbers ( * args) :
num = 0
print ( args)
for n in args:
num += n
return num
result = sum_numbers( 1 , 2 , 4 )
print ( result)
def demo ( * args, ** kwargs) :
print ( args)
print ( kwargs)
gl_nums = ( 1 , 2 , 3 )
gl_dict = { "name" : "小明" , "age" : 18 }
demo( * gl_nums, ** gl_dict)
"""
# demo(gl_nums,gl_dict) # 不拆包的情况下
((1, 2, 3), {'name': '小明', 'age': 18})
{}
"""
yr_20_面向对象的基础语法
"""定义类,以及封装方法
dir(对象)内置函数,可以查看所有的属性和方法
# 类对象可以只有一个,但是可以创造出不同的对象实例。
class A:
pass
"""
class Woman :
def __init__ ( self, name) :
self. name = name
self. __age = 18
def __secret ( self) :
print ( "%s 的年龄是 %d" % ( self. name, self. __age) )
xiaofang = Woman( "小芳" )
yr_21_继承
"""继承类语法
class 类名(父类):
pass
"""
class Animal :
def eat ( self) :
print ( "吃" )
def drink ( self) :
print ( "喝" )
class Dog ( Animal) :
def bark ( self) :
print ( "汪汪叫" )
class XiaoTianQuan ( Dog) :
def fly ( self) :
print ( "我会飞" )
def bark ( self) :
print ( "叫的跟神一样" )
super ( ) . bark( )
print ( "1r37u984r9" )
class Cat ( Animal) :
def catch ( self) :
print ( "抓老鼠" )
wangcai = XiaoTianQuan( )
wangcai. fly( )
wangcai. bark( )
wangcai. eat( )
wangcai. drink( )
"""
多继承:子类可以继承多个父类的属性和方法
class 子类名(父类名1.父类名2,...):
....
"""
class A :
def test ( self) :
print ( "test 方法" )
class B :
def demo ( self) :
print ( "demo 方法" )
class C ( A, B) :
pass
c = C( )
c. test( )
c. demo( )
yr_22_多态
""" 多态
不同的子类对象,调用相同的父类方法,会得到不同的执行结果
注意:以继承和重写父类方法为前提,增加代码灵活度
"""
class Dog ( object ) :
def __init__ ( self, name) :
self. name = name
def game ( self) :
print ( "%s 蹦蹦跳跳" % self. name)
class XiaoTianQuan ( Dog) :
def game ( self) :
print ( "%s 飞到天上去玩耍" % self. name)
class Person ( object ) :
def __init__ ( self, name) :
self. name = name
def game_with_dog ( self, dog) :
print ( "%s 和 %s 快乐的玩耍。。。" % ( self. name, dog. name) )
dog. game( )
wangcai = XiaoTianQuan( "旺财" )
xiaoming = Person( "小明" )
xiaoming. game_with_dog( wangcai)
"""
# 1.创建狗
wangcai = Dog("旺财")
# 2.创建人
xiaoming = Person("小明")
# 3.人和狗一起玩
xiaoming.game_with_dog(wangcai)
小明 和 旺财 快乐的玩耍。。。
旺财 蹦蹦跳跳
"""
"""
# 1.创建狗
wangcai = XiaoTianQuan("旺财")
# 2.创建人
xiaoming = Person("小明")
# 3.人和狗一起玩
xiaoming.game_with_dog(wangcai)
小明 和 旺财 快乐的玩耍。。。
旺财 飞到天上去玩耍
"""
yr_23_类属性和类方法
""" 类也是一个特殊的对象
由类创建的实例对象可以调用类内定义的属性和方法
类其实也有属性和方法,类属性记录与类有关的特征,类方法就是针对类对象定义的方法
@classmethod
def 类方法(cls):
pass
"""
""" 静态方法
@staticmethod
def 静态方法名():
pass
"""
class Dog ( object ) :
@staticmethod
def run ( ) :
print ( "小狗快跑。。。" )
Dog. run( )
yr_24_类综合实例
""" 《实例定义方法的原则》
1. 实例方法:内部需要访问实例属性,或类属性和实例属性都需要访问
2. 类方法:内部只需要访问类属性
3. 静态方法: 不需要访问实例属性和类属性
"""
class Game ( object ) :
top_score = 0
def __init__ ( self, player_name) :
self. player_name = player_name
@staticmethod
def show_help ( ) :
print ( "游戏的帮助信息" )
@classmethod
def show_top_score ( cls) :
print ( "历史最高分 %d" % cls. top_score)
def start_game ( self) :
print ( "%s 开始游戏了。。。" % self. player_name)
Game. show_help( )
Game. show_top_score( )
game = Game( "小明" )
game. start_game( )
yr_25_单例设计模式
""" object提供的内置方法__new__
1. 在内存中为对象分配空间
2. 返回 对象的引用
"""
class MusicPlayer ( object ) :
instance = None
init_flag = False
def __new__ ( cls, * args, ** kwargs) :
if cls. instance is None :
cls. instance = super ( ) . __new__( cls)
return cls. instance
def __init__ ( self) :
if MusicPlayer. init_flag:
return
print ( "播放器初始化" )
MusicPlayer. init_flag = True
player1 = MusicPlayer( )
print ( player1)
player2 = MusicPlayer( )
print ( player2)
yr_26_异常
""" 捕获异常
try:
尝试执行的代码;
except:
出现错误处理的代码;
except Exception as result: # 捕获未知的异常信息
print("未知错误 %s" % result)
else:
pass #没有异常才会执行的代码
finally:
pass # 无论是否异常,都会执行的代码
"""
"""
1.创建Exception的对象
2.使用raise关键字抛出异常
"""
def input_password ( ) :
pwd = input ( "请用户输入密码:" )
if len ( pwd) >= 8 :
return pwd
print ( "主动抛出异常" )
ex = Exception( "密码长度不够" )
raise ex
try :
print ( input_password( ) )
except Exception as result:
print ( result)
yr_27_模块
"""
# 1.方法一
import 模块名1
import 模块名2
调用方法:模块名n.对象
# 2.方法二
import 模块名1 as 模块别名1
import 模块名2 as 模块别名2
调用方法:模块别名n.对象
# 3.方法三
from 模块名 import 工具名
调用方法: 工具名 # 不需要带点信息
注意:如果两个模块存在同名函数,那么后导入模块的函数,会覆盖先导入的函数 ,解决方法在同名函数后用as起别名
# 模块搜索顺序;先在当前目录搜索指定的模块名文件,若没找到,才会返回系统目录去查找
"""
"""
# 代码格式规范
# 导入模块
# 定义全局变量
# 定义类
# 定义函数
#
# 在代码的最下方
def main():
pass
# 根据__name__判断是否执行下方代码
if __name__ == "__main__" # 模块被导入时不会被执行的代码,自己运行的时候才会被执行
main()
"""
yr_28_导入包
import yrmessage
yrmessage. send_message. send( "hello" )
txt = yrmessage. receive_message. receive( )
print ( txt)
导入包yrmessage—init
from . import send_message
from . import receive_message
导入包yrmessage—receive_message
def receive ( ) :
return "这是来自100xx的短信"
导入包yrmessage—send_message
def send ( text) :
print ( '正在发送 %s ...' % text)
yr_29_文件
"""
python 操作文件1函数3方法
open() 打开文件,并返回文件操作对象
.read() 读
.write() 写
.close() 关闭
"""
file = open ( "README" )
txt = file . read( )
print ( txt)
file . close( )
file = open ( "README" )
while True :
txt = file . readline( )
if not txt:
break
print ( txt)
file . close( )
file = open ( "README" , "a" )
file . write( "hello" )
file . close( )