Python基础1——变量、判断、循环、字符串、列表

半臻
• 阅读 2495

1 认识python

1.1 认识python

计算机识别机器语言,机器语言由二进制0和1组成

计算机要执行高级语言,转换方式

  1. 编译 : C语言、C++、java。 一次性编译成可执行文件
  2. 解释 : 一行一行地解释

python是解释型语言

python解释器、pycharm编辑器

举个例子:

要给工地煮饭

编译:把饭菜都做好,做成盒饭(.exe,.class)。带到工地,只需要加热即可使用

解释型:把原材料和锅都带到工地,现场炒菜。

编程语言是用来定义计算机程序的语言,用来向计算机发出指令。

python语言是一种面向对象的解释型计算机程序设计语言

python是强类型动态脚本语言

  1. 强类型:不允许不同类型相加
  2. 动态:不使用显示数据类型声明,比如说a=10
  3. 脚本语言:一般是解释型语言,运行代码只需要一个解释器

1.2 第一个程序

1.2.1 使用cmd命令执行

新建一个python文件

注:要显示后缀名

print("hello world")

在cmd中输入

python xxx.py

1.2.2 使用pycharm执行

在pycharm中配置python解释器

在pycharm中新建一个项目

新建python文件

写入print("hello world")

运行即可

1.3 BUG

bug的翻译是一个虫子,表示电脑系统中隐藏的错误与缺陷

invalid syntax 无效语法

unexpected indent 缩进问题

中文符号和英文符号是不一样的

缩进也要注意

tab 向右缩进

shift+tab 向左缩进

1.4 注释

对代码进行解释说明

在执行的时候,注释是不会被执行的。

单行注释:任意位置都可以了

多行注释:要服从缩进要求

1.4.1 单行注释

# 单行注释
print("Hello")

快捷键:Ctrl+/

撤销 : Ctrl+z

复制到下一行:Ctrl+d

搜索: Ctrl+F

1.4.2 多行注释

'''
这是三个单引号的多行注释
这是三个单引号的多行注释
这是三个单引号的多行注释
'''
print("hello")
"""
这是三个双引号的多行注释
这是三个双引号的多行注释
这是三个双引号的多行注释
"""

2 变量

2.1 运算符

+ #加
- #减
* #乘
/ #除
//   #整除
%  #取余
** #幂次方


1/2  # 得到1.5
1//2 # 得到0
5//2 # 得到2
3**2 # 得到9
2**3 # 2*2*2=8
9%2 # 得到1


优先级:
幂运算 ** 
乘、除、取余、取整除  + 、 % //
加减 + -

4*2**3  #幂运算的优先级较高

= #赋值运算符
+=  #  n += 1 等价于 n = n+1 
-=  #  n -= 1 等价于 n = n-1 
*=  #  n *= 2 等价于 n = n*2
/=  #  n /= 2 等价于 n = n/2
%=
**=
//=

2.2 变量

将运行的结果保存起来

概念:一个容器,计算机当中的存储空间

作用:在计算机内保存数据

保存数据的格式: 变量名=值

在python中是没有变量类型的,变量名更像是一个便利贴,把便利贴贴到数据上。

举个例子:

某城市要打造运动城市,那么就需要盖很多的运动场馆,每个场馆就是一个变量。

对于C语言、C++、Java等语言

如果要举办足球比赛,那么就需要专门搭建一个足球场。在这个足球场馆中只能举办足球比赛。

如果要举办篮球比赛,那么就需要专门搭建篮球场馆。

int a;  //搭建一个int场馆
a = 10  //只能放int类型的数据
char b;  //搭建一个shar场馆
b = 'c' //只能放char类型的数据

对于Python、javascript等语言

不需要专门搭建场馆,随便指定个场馆,贴个足球场的牌子,就称为了足球场。

贴个篮球场的牌子,就成了篮球馆。

a = 10  # 贴个便利贴,这是int场馆
a = 'c' # 贴个便利贴,这是char场馆

查看变量类型

a = 100
print(type(a))
a = "python"
print(type(a))

2.3 变量的命名规范

变量的命名规范

  1. 只能由数字,字母,_(下划线)组成
  2. 不能数字开头
  3. 不能是关键字
  4. 区分大小写

注意:变量要见名知义


a_1 = "a"
aaa = "c"
a12 = "d"
_a = 20 
2a  = "c" #错误,不能以数字开头
print = 10 #错误不能用关键字
type = 20 #错误不能使用关键字
he!he = 20 #不可以,!不能出现

A = 10
a = 20
print(A) #区分大小写的
print(a) #区分大小写的


# 可以使用中文,但是不推荐
年龄 = 18
print(年龄)
# 查看所有关键字

import keyword
print(keyword.kwlist)

下划线分割命名法

my_name = "张三"
my_job = "律师"

驼峰命名法

myName = "张三"
myJob = "律师"

FirstName = "伊丽莎白"

2.4 输入输出

输出


print(123)
print("张三")

a = '''
张三
李四
'''
print(a)

转义字符

\t #表示制表符,表示4个空格
print("abc\tdef")

\n #表示换行符
print("hello\nworld")

\r 相当于回车
print("hello\rworld")

\\ 表示反斜杠符号
print("hell\\o")

input函数

name = input("请输入名字")
print(name)

3 数据类型

3.1 数据类型

int 整数类型 : 任意大小的整数

float 浮点型

bool 布尔型

complex 复数(了解)

a = 10
print(type(a)) #整数

b = 10.2
print(type(b)) # 浮点数

c = True  #bool类型
print(type(c))
# True相当于非零
# False相当于零
print(False+2)

# 复数 包含 实部和虚部
# 固定写法 z = a+bj  其中a为实部,b为虚部
print(1+2j)
a = 1+2j
b = 3+4j
print(a+b)
print(a*b)

3.2 字符串

名称:str

# 字符串要加引号,单引号、双引号、三引号都可以
name = "zhangsan"
print(name)
print(type(name)) #字符串类型

name2 = '伞兵一号,准备就绪'
print(name2)
print(type(name2))

# 用三引号进行定义
name3 = '''
你怎么睡得着的?
你这个年龄段睡得着觉?
'''
print(name3)

字符串的运算符

+ # 字符串拼接
a1 = "hello " + "python"
print(a1)

a1 = "hello"
b1 = "teacher"
print(a1+" "+b1)

* # 重复输出
print("hello"*3)
print(a1*3)

# 成员运算符:检查字符串中是否包含了某个字符
# in
# not in
a1 = 'hello'
print('h' in a1) #判断a1中是否包含h
print('h' not in a1) #判断a1中是否不包含h



3.3 下标及切片

下标是从0开始的


# 下标: 从0开始
name = 'python'
print(name)
print(name[0]) #写法:字符串名[下标]
print(name[4])
print(name[10]) # 数组越界,超出下标范围

print(name[-1]) #取最后一个
print(name[-2]) #取倒数第二个

切片,截取一段数据

[起始:结束:步长]

# [起始:结束:步长]
name = "python"
print(name[0:3:1]) #左闭右开
print(name[0:3]) #左闭右开

print(name[2:4])

print(name[-3:-5]) #空,没有取到
print(name[4:2]) #空
print(name[-5:-3]) #导数第五个开始

# 步长 表示选取间隔  不写步长,默认是1
# 步长的绝对值大小绝对值决定数据的间隔,正负号决定方向
print(name[4:2:-1]) #从右往左取
print(name[-3:-5:-1]) 

print(name[3:]) # hon
print(name[:]) #python

print(name[::2]) #pto

# 对字符串进行逆序
print(name[::-1]) #nohtyp

3.4 格式化输出

占位符

占位符 作用
%s 字符串
%d 整数
%4d 整数,四位,如果不足前面补充空白
%f 浮点数
%.4f 设置小数位数,四舍五入
%% 输出%
# 占位符 %格式化输出
# %s 字符串
name = "张三"
print("这是一个字符串:%s" % name)
print("年龄:%d,姓名%s"%(18,name))

a = 1.2345
print("%f"%a) #默认后六位

format() 使用多括号来代替百分号

print("我是{},年龄{}".format("张三",20))

f 表达式

name = "张三"
age = 18
print(f"我叫:{name},今年:{age}")

3.5 类型转换

待补充

4 if 判断

根据条件是否满足,来执行相应的代码

age = 16
if age >= 18: #英文冒号
    print("已经成年了")

4.1 比较运算符

比较运算符


== # 两个变量的值是否相等
!= # 比较值是否不相等
a = 4
b = 3
if a>b:
    print("a的值大")

print(a == b)
print(a != b)

if a==b:
    print("a和b相等")

4.2 逻辑运算符

and  与
or   或
not  非

# and 需要两个都成立才行
name = "zhangsan"
age = 18
if name == "zhangsan" and age == 18:
    print("两个都满足")

if name == "zhangsan" or age == 18:
    print("两个满足一个即可")

if not (name=="zhangsan"):
    print("不等于张三")

4.3 if-else

age = 16
if age>=18:
    print("已经成年了")
else:
    print("还没有成年")


a = 1
b = 2
if a < b:
    print("a比b小")
else:
    print("a比b大")

4.4 三目运算符

# a if a>b else b
# 格式 为真的结果 if 判断条件 else 为假的结果

a = 1
b = 2
print('a比b小' if a<b else 'a比b大')

4.5 if-elif


if 条件1:
    代码语句
elif 条件2:
    代码语句
elif 条件3:
    代码语句

sc = 85
if sc >= 85:
    print("优秀")
elif sc >= 75 and sc <=84:
    print("良好")
elif sc >= 60 and sc < 75:
       print("及格")
elif sc >= 0 and sc <60
    print("不及格")

python中可以使用连不等,其他语言不行

sc = int(input("请输入成绩"))

if 85 <= sc <= 100:
    print("优秀")
elif 75 <= sc < 85:
    print("良好")
elif 60 <= sc < 75:
    print("及格")
elif 0 <= sc < 60:
    print("不及格")
else:
    print("成绩无效")

4.6 if嵌套

if 条件1:
    if 条件2:
        执行语句

d = 0 #是否有车偏偏
d = 1 #是否有危险品

if p==1:
    print("你有票,开始安检")
    if d==1:
        print("有危险品,不能进去")
    else:
        print("可以进站了")
else:
    print("赶紧抢票")

5、循环

5.1 while循环

# while 条件:
#     循环体
#     改变变量

i = 0
while i<=20:
    print(f"我要好好学习{i}")
    i += 1

# 计算1-100的和
i = 1
s = 0
while i<=100:
    s += i
    i += 1
print(f"0-100的和为{s}")

i = 1
s = 0
while i<=100:
    s += i
    i += 1
else: #当while条件不满足时执行
    print(f"0-100的和为{s}")

5.2 while嵌套

a = 1
while a < 4:
    print(a)
    b = 1
    while b < 5:
        print("这是b值")
        b += 1
    a += 1

九九乘法表

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(f"{i}*{j}={i*j}",end="\t")
        j += 1
    i += 1
    print()



5.3 for循环

# for 临时变量 in 可迭代对象:
#     操作代码

name = "zhangsan"
for i in name:
    print(i)
# range(开始,结束,步长) 左闭右开

for i in range(1,6):
    print(i)

s = 0
for i in range(0,101):
    s += i
print("1-100的和",s)

5.3 break和continue

break :结束当前循环

continue: 直接进入下一轮循环


i = 0
while True:
    print("hello")
    if i > 4:
        break
    i += 1


i = 0
while i < 10:
    print(i)
    if i == 4 or i==5:
        continue
    i += 1

6、字符串、列表

6.1 字符串编码

ASCII 编码

GBK

UTF-8

编码: encode()

解码: decode()


encode : 将其他编码的字符串转换为Unicode编码
decode : 将unicode编码转换成其他编码的字符串

a = 'hello'
print(a)
a1 = a.encode() #编码
print(a1)
print(type(a1)) #<class 'bytes'>


a2 = a1.decode() #解码
print(a2)
print(type(a2))

a = "你好啊"
a_encode = a.encode()
print(a_encode)

6.2 字符串常见操作

find() # 查找字符是否包含在字符串中,找到返回开始的索引下标,找不到返回-1
name = "互联网水太深互联网"
name.find("互联网")
name.find("互联网",3) #从下标3开始寻找
name.find("你好") #没找到,返回-1


index() # 跟find方法类似,不过没找到会抛出异常


count() #计算字符串出现的次数
print(name.count("互")) # 总共出现2次


replace()  #字符串的替换
name = "在干嘛?吃了吗,吃了吧"
name.replace("吃","睡") #把吃替换成睡
name.replace("吃","睡",1) #只替换一次 

split() #字符串的分割
name = "哈哈哈哈x哈哈哈哈x嘻嘻嘻xxx"
name.split("x") #按照x进行切割
name.split("x",2) # 只切割两刀

name = "hello"

# capitaliza()  #第一个字母大写
print(name.capitalize()) #Hello

# startswith()
print(name.startswith("he")) #判断是否以he开头

# endswith()
print(name.endswith("lo")) #判断是否以lo结尾

# lower() 转换为小写
print(name.lower())

# 转换为大写
print(name.upper())

6.3 列表的相关操作

li = ['zs','ls','ww',2,3,4,5]
print(type(li)) #<class 'list'>

print(li[0])
print(li[-1]) #最后一个

#切片操作也是可以的
print(li[3:6])
print(li[1:4,2])
# 添加元素
# append
# extend
# insert
li2 = [1,2,3,4,5]
li2.append('10') #只添加一个元素
li2.extend(['4','5','6']) # 添加一个list
li2.insert(3,'11') # 在指定的位置插入元素11


# 修改元素 
# 通过下标修改
li2[2] = '你好'

# 查找元素
# in  如果存在返回True
# not in
# index
# count
li2 = ["张三","李四","王五"]
print("张三" in li2)
print("张三" not in li2)
print(li2.index("李四")) #查找李四的下标,找不到报错
print(li2.count("李四")) #李四出现的次数

#删除元素
# del
# pop
# remove
li2 = [1,'b','c','d']
del li2[2] # 根据下标删除
li2.pop() # 删除最后一个元素
li2.pop(3) # 删除下标为3的元素
li2.remove('c') # 根据元素的值进行删除

# 排序
# sort : 默认是从小到大
# reverse
li3 = [1,2,9,4,3]
li3.reverse() # 对list中的元素逆序
li3.sort() # 进行排序,升序
li3.sort(reverse=True) #倒序排序

li4 = sorted(li3,reverse=True) #倒序排序

6.4 列表推导式


# [ 表达式 for 变量 in 列表]
# [ 表达式 for 变量 in 列表 if 条件]


l = [i for i in range(100)] #取1-100的所有数字
l2 = [i for i in range(100) if i%2==0] #取偶数

6.5 列表嵌套

列表中包含列表


li = [1,2,3,[4,5,6]]

print(li[1])

print(li[3][0])
print(li[3][2])

7、元组、字典、集合

7.1 元组

使用()进行定义

使用小括号进行定义

元组不可以修改元素

tu = (1,2,3)
print(tu)
print(type(tu))

当写元组的时候,只有一个元素,末尾一定要加逗号

tu = (1)
print(type(tu)) 
# <class 'int'>

tu = (1,)
print(type(tu))
# <class 'tuple'>

除了修改和删除,其他的操作与列表类似

tu3 = ('a','b','c','d')
print(tu3.index('b'))
print(tu3.count('b'))

7.2 字典

dic = {'name':"zhangsan",'age':18}
# 键值对的形式
print(dic)
print(type(dict))

# key 对应 value
# name 是键 、 "zhangsan"是值
#  key 是唯一的,当key相同时,就会被覆盖
dic2 = {"name":"zhangsan", "name":"lisi"}
print(dic2["name"]) # 得到 lisi

字典的基本操作

dic = {"name":"zhangsan","age":18}

# 查看元素
# 变量名[key]
# 变量名.get(key)
print(dic["name"])
print(dic.get("name","不存在")) #如果没有key,返回不存在

# 修改元素
# 变量名[key] = vlaue
dic["name"] = "李四"

# 添加元素
# 变量名[key] = value
dic["job"] = "律师"


# 删除数据
# del 变量名[key]
# 变量名.clear()  清空整个字典
del dic["job"] #删除
del d #删除整个字典
dic.clear() #清空字典

字典的常见操作

d2 = {"name","zhangsan","age":18}

len() #键值对个数
print(len(d2))

keys() #所有key的列表
print(d2.keys())


values() #所有值的列表
print(d2.values())

items() #包含 键、值的列表
for key,value in d2.items():
    print(key,value)

7.3 集合

使用{}进行定义

集合是无序的,也是唯一

集合是通过hash()来确定唯一性。 整数的hash()就是本身hash(3)=3,但是字符串的hash()每次都不一样

s1 = {1,2,3}
print(type(s1))

s1 = {1,2,4,3,5}
print(type(s1))

s1 = {1,2,3,4,4,4,6} #重复的会删除
print(s1)
print(type(s1))
# 添加元素
# add
# update
s1 = {1,2,3,4}
s1.add(8) #只能添加1个元素
print("添加后的",s1)
s1.update("678") #得到{1,2,3,4,'6','7'.'8'}


# 删除元素
# remove
# pop
# discard
s2.remove('6') #删除指定元素,有则删除,无则报错
s2.pop() #随即删除
print("删除后",s2)
s2.discard('6') #删除指定元素,有则删除,无则不操作


# 交集
# &
s1 = {3,4,5}
s2 = {5,6,7}
print(s1 & s2)

# 并集
# |
s1 = {3,4,5}
s2 = {5,6,7}
print(s1 | s2)
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这