Python 基础

# %% [markdown]
# # <center><font face="仿宋" color=blue size=30>Python基础</font></center>
# ## <center><font face="楷体" color=purple>黄俊人</font></center>
# ### 一、变量
# #### 1. 一种会变化的状态,这个状态可以描述世间万物
# #### 2. Python中定义变量

# %%
name='Jason' # 变量名、赋值符号、变量值
print(name) # 变量名做了什么事情:接收了变量值

# %%
print('Jason')

# %% [markdown]
# #### 3.定义变量名的命名规范
#    1. 变量名应当具有某种意义
#    2. 变量名只能使用字母、数字、下划线,并且第一个字符不能是数字(也不能是下划线)
#       ```
#       + = 1 #报错
#       ```
#    3. 不能使用关键字
#       + 关键字:一个单词具有某种意义 #print
#       + 语法:一句话具有某种意义 #print('Jason')
#       ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
#    4. 两种定义变量名的方式
#       + 下划线:age_of_jason (下划线用来区分单词)

# %%
age_of_jason = 19
print(age_of_jason)

# %% [markdown]
#    +  驼峰体:AgeOfJason(不建议使用)

# %%
AgeOfJason = 19
print(AgeOfJason)

# %% [markdown]
# ### 二、常量
# #### 1. 固定不变的量

# %%
huangjunren_height = 180
huangjunren_height = huangjunren_height+10
print(huangjunren_height)

# %% [markdown]
# #### 2.定义常量
#    + 因为变量是变化的量,常量则是不变的量。python中没有使用语法强制定义常量,也就是说,python中定义常量本质上就是变量。如果非要定义常量,变量名必须全大写。

# %%
AGE_OF_JASON = 19
AGE_OF_JASON = AGE_OF_JASON + 1
print(AGE_OF_JASON)

# %% [markdown]
# #### 3. 注释
#    + 有些代码你花了很久写出来,过了些天再回去看,发现竟然看不懂了;一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,这产会挨打的。所以为了避免这种尴尬的事情发生,一定要增加你代码的可读性。
#    + 代码注释分单行和多行注释,单行注释用#,多行注释可以用三对单/双引号,使用三引号注释可以换行。
#    + 添加注释的原则:1.不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可2.注释可以用中文或英文,但不要用拼音

# %%
# 单行注释

'''
三单引号注释
三单引号注释
'''

"""
三双引号多行注释
三双引号多行注释
"""

# %%
name = 'huangjunren'
height = 190 # 身高
wight = 180 # 体重

# %% [markdown]
# ### 三、内存管理
# #### 1.看Python如何在内存中创建变量
#    + 定义变量名就是在开辟内存空间
# #### 2 引用计数
#    + 引用是针对变量值的

# %%
name = 'Jason' #引用计数为1,即这个变量值被引用多少次
name2 = name #'Jason'的引用计数为2
name1 = 'Jason1'

del name #'Jason'的引用计数为1
del name2 #'Jason'的引用计数为0


# %% [markdown]
# #### 3.垃圾回收机制
#    + 当变量值的引用计数为0的时候,Python会自动回收该变量值的内存占用

# %%
print ('Jason')
'''
name ="Jason"
print (name)
del name
内存内部是这样运行的
'''

# %% [markdown]
# #### 4.小整数池
#    + [-5,256]之间的整数由于经常用到,所以在Python启动的那一刻,就会开辟一块内存空间放入这些整数,他们不会被垃圾回收机制回收(Python提供)

# %%
x = 10
y = 10
print(x+10)
print(y+10)  
#x=10的10引用计数其实为2

# %% [markdown]
#    + 时间短,并且占用内存比较小,会把他们放在同一块内存中(jupyter和pycharm提供)

# %%
name1 = '1234'
id(name1)

# %%
name2 = '1234'
id(name2)

# %% [markdown]
# ### 四、数据类型介绍
#    + 不同的数据会有不同的数据类型
#    + 未来定义不同的数据,Python中提供了下述几个数据类型:
# #### 1.数字类型
# ##### 1.1整型
#    1. 作用:描述ID号、银行卡号
#    2. 定义方式:如下代码(变量名=变量值)
#    3. 方法:+-*/%

# %%
height = 180 #180为整型

# %% [markdown]
# ##### 1.2浮点型
#    1. 作用:薪资(3.2万)、商品价格
#    2. 定义方式:如下代码
#    3. 方法:+-*/%

# %%
salary = 32.2

# %% [markdown]
# #### 2.字符串类型
# ##### 2.1作用:表示名字、爱好
# ##### 2.2定义方式:如下代码(字符串相当于一根羊肉串。而字符串就是一串被串起来的字符,在单引号、双引号或三引号内包裹的一串字符。需要注意的是:三引号内的字符可以换行,而单双引号内的字符不行。)

# %%
name1 = 'jason'
name2 = "jay"
print(id(name1))
print(type(name1))
print(name1)
name3 = """jason
jay"""

print(name3)
# 注意区分注释与字符串

# %% [markdown]
# ##### 2.3用法
#    + 字符串只能+、*和逻辑比较(字符串的拼接,即重新申请一个小空间把两个字符串都拷贝一份后再拼接。而不是你YY的把一个小空间内的变量值复制到另一个变量的小空间内,然后拼接。)
#

# %%
name = 'jason'
height = '180'
weight = '140'
name+height+weight

# %% [markdown]
#    + 注意: **字符串不能与数字相加,但是可以与数字相乘**

# %%
name='jason'
print(name*2)


# %%
name = 'jason'
height = 180
name+height

# %% [markdown]
#    + 注意:如果字符串内有引号,则包裹字符串的引号和字符串内部的引号不能相同。

# %%
msg2 = "my name is 'jason'"
msg3 = 'my name is "jason"'

print(msg2 + msg3)  # my name is 'jason'my name is "jason"

# %% [markdown]
#    + 注意:字符串的乘法只能乘以数字。

# %%
name = 'jason '
print(name * 10)

# %% [markdown]
# #### 3.列表
#    + 定义方式:在[]内用逗号分隔开任意类型的值。

# %%
hobby_list = ['read', 'run', 'girl']
# 索引序号      0       1      2
# 取出第二个爱好
print(hobby_list[1])

# %%
hobby_list = ['read', 'run', ['girl_name', 18, 'shanghai']]
# 取出girl的年龄
print(hobby_list[2][1])

# %% [markdown]
# #### 4.字典
#    + 定义方式:在{}内用逗号分隔开多个元素,每一个元素都是key: value的格式,其中value是任意格式的数据类型,key由于具有描述性的作用,所以key通常是字符串类型。

# %%
# 字典套列表
user_info = {'name': 'jason', 'gender': 'male', 'age': 24,
             'company_info': ['oldboy', 'zhongqing', 50]}
print(user_info['name'])
print(user_info['company_info'][0])

# %%
# 字典套字典
user_info = {'name': 'jason', 'gender': 'male', 'age': 24, 'company_info': {
    'c_name': 'oldboy', 'c_addr': 'chongqing', 'c_num_of_employee': 50}}

print(user_info['name'])
print(user_info['company_info']['c_addr'])

# %%
students = [
    {'name': 'nick', 'age': 19},
    {'name': 'egon', 'age': 18}
]
print(students[0]['name'])

# %% [markdown]
# #### 5.布尔数据类型
#    + 注意:布尔类型一般不用于打印、定义变量,除了0、None、空、False都自带布尔值为True
#    + True or False

# %%
print(bool(0))
print(bool(None))
print(bool(''))
print(bool([]))
print(bool({}))
print(bool(False))

# %%
print(bool(0))
print(bool('nick'))
print(bool(1 > 2))
print(bool(1 == 1))

# %% [markdown]
#
# #### 6.变量的三个特征

# %%
x = 10
print(x)  # 获取变量的变量值
print(id(x))  # 获取变量的id,可以理解成变量在内存中的地址
print(type(x))  # 获取变量的数据类型,下章会详细介绍数据类型

# %% [markdown]
# ### 五、Python的与用户交互

# %%
input('请插入银行卡')
input('请输入密码')

# %% [markdown]
#    + input只是为了做一个过渡阶段,无论输入的是什么,input接受的的都是字符串

# %%
vip_card = input('请插入银行卡')
print(vip_card)
print(id(vip_card))
print(type(vip_card))

# %%
age = input('请输入你的年龄:')
print(age)
age = int(age) #因为字符不能与数字相加,因此将字符转化为数字
print(type(age))
age = age + 1
print(age)

# %% [markdown]
# ### 六、格式化输入

# %%
name=input('name:')
age=input('age=')
height=input('height:')

print('My name is',name,',My age is',age,',My height is',height)

# %%
name=input('name:')
print('My name is '+name) #加号与逗号都可以

# %% [markdown]
# #### 1.占位符
#    + %s(针对所有数据类型)、%d(仅仅针对数字类型)

# %%
name=input('name:')
age=input('age=')
height=input('height:')

print('My name is %s,My age is %s,My height is %s'%(name,age,height))

# %%
name=input('name:')
name=int(name)
age=input('age=')
age=int(age)
height=input('height:')
height=int(height)       #这两行可以表示为height_int=int(input('height:'))

print('My name is',name,',My age is',age,',My height is',height)

# %% [markdown]
# #### 2.f-string格式化(推荐)

# %%
name=input('name:')
age=input('age=')
height=input('height:')

print(f'My name is {name},My age is {age},My height is {height}')

# %%
print(f'My name is {name},My age is {int(age)+1:.2f},My height is {height*2}')  #:.2f表示保留两位小数

# %% [markdown]
# ### 七、基本运算符(含解压缩)
# #### 1.算术运算符
#    + <a href="https://imgse.com/i/pk5olZV"><img src="https://s21.ax1x.com/2024/07/15/pk5olZV.md.png" alt="pk5olZV.png" border="0"  width="1000" height="500"/></a>

# %% [markdown]
# #### 2.比较运算符
#    + <a href="https://imgse.com/i/pk5ouMn"><img src="https://s21.ax1x.com/2024/07/15/pk5ouMn.md.png" alt="pk5ouMn.png" border="0" width="1000" height="500"/></a>

# %% [markdown]
# #### 3.赋值运算符
#    + <a href="https://imgse.com/i/pk5omxs"><img src="https://s21.ax1x.com/2024/07/15/pk5omxs.md.png" alt="pk5omxs.png" border="0" width="1000" height="500"/></a>

# %% [markdown]
# #### 4.逻辑运算符
#    + <a href="https://imgse.com/i/pk5oe2j"><img src="https://s21.ax1x.com/2024/07/15/pk5oe2j.md.png" alt="pk5oe2j.png" border="0" width="1000" height="200"/></a>

# %%
1<=1 and 1>=1

# %%
not '小花很美'

# %% [markdown]
# #### 5.身份运算符
#    + <a href="https://imgse.com/i/pk5oMq0"><img src="https://s21.ax1x.com/2024/07/15/pk5oMq0.md.png" alt="pk5oMq0.png" border="0" width="1000" height="200"/></a>
#    + **id相同的值一定相同,值相同的id不一定相同,小整数池除外**

# %%
x=10
y=10
 
print(x is y)
print(x == y)

# %%
x=257
y=257
 
print(x is y)
print(x == y)

# %%
x=11
y=10
 
print(x is y)
print(x == y)

# %% [markdown]
# #### 6.位运算符
#    + <a href="https://imgse.com/i/pk5oKrq"><img src="https://s21.ax1x.com/2024/07/15/pk5oKrq.md.png" alt="pk5oKrq.png" border="0" width="1000" height="500"/></a>

# %% [markdown]
# #### 7.成员运算符
#    + <a href="https://imgse.com/i/pk5oZGQ"><img src="https://s21.ax1x.com/2024/07/15/pk5oZGQ.md.png" alt="pk5oZGQ.png" border="0" width="1000" height="150"/></a>

# %% [markdown]
# #### 8.链式赋值

# %%
x=y=z=10
print(x,y,z)

# %% [markdown]
# #### 9.交叉赋值

# %%
x=10
y=20

z=x  # x=z=10
x=y  # x=y=20
y=z  # y=z=10

print(x,y)

# %%
x=10
y=20

x,y=y,x
print(x,y)

# %% [markdown]
# #### 10.解压缩

# %%
hobby_list = ['read','run','piano',123,456,789]
hobby1,hobby2,_,_,_,_ = hobby_list
print(hobby1,hobby2)
print(_)                # _表示赋值的数据不要了,有多个_的情况下,

# %%
hobby_list = ['read','run','piano',123,456,789]
hobby1,hobby2,*_ = hobby_list    # *_只能用在省略中间所有或者前后所有的值
print(hobby1,hobby2)
print(_)                         # *_表示所有它所代表的值

# %%
hobby_list = ['read','run','piano',123,456,789]
hobby1,hobby2,*a = hobby_list    # *_只能用在省略中间所有或者前后所有的值
print(hobby1,hobby2)
print(a)                         # *_表示所有它所代表的值

# %% [markdown]
# ### 八、流程控制之if判断
# #### 1.if

# %%
if 条件的bool值为True:
    代码1
    代码2
    代码3
    ...
             # 代码块(同一缩进级别的代码,例如代码1、代码2和代码3是相同缩进的代码,
             # 这三个代码组合在一起就是一个代码块,相同缩进的代码会自上而下的运行)

# %%
name = input('请输入你的名字:')
if name =='jason':
   print('你好帅,我喜欢你')

# %% [markdown]
# #### 2.if...else

# %%
if 条件:
    代码1
    代码2
    代码3
    ...
else:
    代码1
    代码2
    代码3
    ...

# %%
name = input('请输入你的名字:')
if name =='jason':
   print('你好帅,我喜欢你')
else:
   print('你走吧,你不是他')

# %% [markdown]
# #### 3.if...elif...else

# %%
if 条件1为True:
    代码1
    代码2
    代码3
    ...
elif 条件2为True:
    代码1
    代码2
    代码3
    ...
elif 条件3为True:
    代码1
    代码2
    代码3
    ...
...
else:
    代码1
    代码2
    代码3
    ...

# %%
age_jason = 24

age = int(input('请输入你猜的年龄:'))

if age == age_jason:
    print('\033[1;31m恭喜你,猜对了\033[0m')
elif age > age_jason:
    print('猜大了,傻逼')
else:
    print('猜小了,傻逼')

# %% [markdown]
# ### 九、流程控制之while循环

# %%
while 条件为True:
    代码块
    代码块
    代码块

# %%
while 1:
    age_jason = 24

    age = int(input('请输入你猜的年龄:'))

    if age == age_jason:
        print('\033[1;31m恭喜你,猜对了\033[0m')
    elif age > age_jason:
        print('猜大了,傻逼')
    else:
        print('猜小了,傻逼')

# %% [markdown]
# #### 2.while+break

# %%
while 1:
    age_jason = 24

    age = int(input('请输入你猜的年龄:'))

    if age == age_jason:
        print('\033[1;31m恭喜你,猜对了\033[0m')
        break
    elif age > age_jason:
        print('猜大了,傻逼')
    else:
        print('猜小了,傻逼')

print('我跳出while循环了')

# %% [markdown]
# #### 3.while循环的嵌套

# %%
prize = {0:'dragon ball',1:'basketball',2:'phone'}
 
while 1:
    age_jason = 24

    age = int(input('请输入你猜的年龄:'))

    if age == age_jason:
        print(f'\033[1;31m恭喜你,猜对了\n你可以从下面的奖品中选择一个\n{prize}\033[0m')
       
        while True:
            choice = int(input('请输入你想要的奖品序号:'))

            if choice == 0:
                print('快睡觉吧,梦里有')
           
            elif choice == 1:
                print('行吧,这个可以有')
                break
             
            else :
                print('想什么呢,还想要手机?')

        break
    elif age > age_jason:
        print('猜大了,傻逼')

    else:
        print('猜小了,傻逼')

# %% [markdown]
# #### 4.while + continue

# %%
count = 1
while count < 101: # 1<101,2<101,count=50
    if count == 50 :
        count += 1
        continue  #不执行下面代码

    print(count) #1、2
    count += 1

# %% [markdown]
# + 总结:break-直接终止整个while循环;continue-只是不执行下面的代码,但是会循环下去

# %% [markdown]
# ### 十、流程控制之for循环

# %%
game_list = ['lol','cs','暖雪','金铲铲','nizhan','wangzherongyao']
#             0     1    2      3       4        5
ind = 0
while ind < 6 :
    print(game_list[ind])
    ind += 1

# %%
for i in game_list:
    print(i)
"""
 for循环就等于上面的while循环:ind = 0
while ind < 6 :
    print(game_list[ind])
    ind += 1
"""


# %%
for i in 列表 or 字典:
    i就是列表中的每一个元素  # 第二行要有缩进

# %% [markdown]
# #### 1.for + break

# %%
game_list = ['lol','cs','暖雪','金铲铲','nizhan','wangzherongyao']
#             0     1    2      3       4        5
for i in game_list:
    if i == '金铲铲' :
        break
    print(i)

# %% [markdown]
# #### 2.for + continue

# %%
game_list = ['lol','cs','暖雪','金铲铲','nizhan','wangzherongyao']
#             0     1    2      3       4        5
for i in game_list:
    if i == '金铲铲' :
        continue
    print(i)

# %% [markdown]
# #### 3.for嵌套

# %%
for i in range(3):                #  range(3)=[0,1,2]
    print(f'----:{i}')
    for j in range(2):
        print(f'****:{j}')

# %% [markdown]
# #### 4. 打印出loading......

# %%
import time             # 让.延迟出现
print('loading',end='') # 源代码为,end='/n'  ,这里用空白取消换行
for i in range(6) :
    print('.',end='')
    time.sleep(0.5)       # 让.延迟出现

# %% [markdown]
# ### 十一、leetcode

# %% [markdown]
# + 进入力扣网站→题库→算法→难度:简单



posted @ 2024-07-23 11:15  jayyy798  阅读(65)  评论(0)    收藏  举报