Python入门学习个人记录(1) print/input/运算/分支结构/列表

160 阅读14分钟

使用工具:

Python3.9编译器 (Windows商城下载

pycharm


输出函数print

print(520)
print("helloworld")
print(3+3)
print("3+3")

520
helloworld
6
3+3

输出到文件中

fp=open('D:/text.txt','a+')  //a+含义:如果文件不存在就创建,存在就在文件的后面进行追加
print("hello",file=fp)
fp.close()


将hello输出到D盘中的text.txt文件中

转义字符

反斜杠+实现转移功能的首字母

换行:\n
print('hello\nwwwww')
结果:
hello
wwwww


回的:\r
print('hello\rwwwww')
结果:
wwwww     //输入完hello之后,回到这行的开头再输入wwwww,wwwww将hello顶掉了




水平制表符:\t
print('hello\twwwww')
结果:
hello	wwwww



退格:\b
print('hello\bwwwww')
结果:
hellwwwww

如果想输出\\,那么需要输入\\\\
print("\\\\")
结果:
\\

查看保留字

输入
import keyword
print(keyword.kwlist)

结果:
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', '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']

变量的定义和使用

name="maliya"
print("值", name)
print("标识",id(name))
print("类型",type(name))


结果:
值 maliya
标识 2709058027760
类型 <class 'str'>

变量的多次赋值


name="小明"
name="小红"
print(name)
结果:
小红



name="小明"
print(name)
name="小红"
print(name)
结果:
小明
小红

数据类型

  • 整数类型 int

n1=90
n2=-76
print(n1,type(n1))
print(n2,type(n2))

print("十进制",123)
print("二进制",0b110101)   //前面输入0b  八进制,十六进制自行百度

90 <class 'int'>
-76 <class 'int'>
十进制 123
二进制 53

  • 浮点数类型 float
n1=3.1
n2=3.2
print(n1,type(n1))
print(n2,type(n2))
print(n1+n2)


结果
3.1 <class 'float'>
3.2 <class 'float'>
6.300000000000001    //因为按二进制计算,浮点数会存在误差


解决办法:
from  decimal import Decimal
print(Decimal('3.1')+Decimal('3.2'))
结果:
6.3
  • 布尔类型 bool true=1 flase=0

注意点:Python里面bool类型可以转化为整数值进行计算


f1=True    //注意要大写,保留字的原因
f2=False
print(f1,type(f2))
print (f1+10)     //true是1,10+1=11


结果:
True <class 'bool'>
11
  • 字符串类型 str 常用的数据类型

可以使用单引号、双引号、三引号来定义

区别:单引号、双引号定义的只能在一行,三引号的能连续多行

strf1="rooter"
str1="123"
print(strf1,type(strf1))
print(str1,type(str1))


输出:
rooter <class 'str'>
123 <class 'str'>

数据类型转换

name="田所"
age=24

print(name,type(name))   #name与age数据类型不相同
print(age,type(age))

print("我叫"+name+",今年"+age+"岁")   #报错,因为不能连接str和int
print("我叫"+name+",今年"+str(age)+"岁")    #将int转换为str类型
print("我叫"+name+",今年",age,"岁")          #使用逗号隔开

田所 <class 'str'>
24 <class 'int'>
我叫田所,今年24岁
我叫田所,今年 24

注意str类型转int时,字符串必须为数字串,非数字串不允许转换

注释:

使用 # 开头 快捷键:Ctrl+/

输入函数input

作用:接受来自用户的输入

image.png

a1=input("输入第一个数")
a2=input("输入第二个数")
print("结果为:",a1+a2)
结果:
输入第一个数3
输入第二个数4
结果为: 34     这里是因为a1a2为字符串类型


修改:
a1=input("输入第一个数")
a2=input("输入第二个数")
print("结果为:",int(a1)+int(a2))
结果:
输入第一个数3
输入第二个数4
结果为: 7

运算符

image.png

算数运算符 基本运算

print(1+1)
print(2-1)
print(2*3)
print(11/2)   #加减乘除
print(11//2)  #整除
print(11%2)   #取余
print(2**4)   #乘方运算 表示2*2*2*2,即2的四次方



结果:
2
1
6
5.5
5
1
16

一些公式:

image.png

赋值运算符

image.png

解包赋值:

a,b,c=20,30,40
print(a,b,c)


20 30 40

数值交换:

a,b=20,30
print(a,b)

a,b=b,a   //直接交换
print(a,b)


20 30
30 20

比大小:

a,b=10,20
print(a>b)
print(a>=b)
print(b>=a)
print(a==b)
print(a!=b)

False
False
True
False
True 
a=10
b=10
print(id(a),id(b))     //查看id

print(a==b)   //A和B的value,也就是10这个值相等
print(a is b)  //A和B的id标识,也就是地址相等



结果:
1787543972432 1787543972432
True
True

布尔运算

image.png

a="helloworld"
print("w" in a)
print("w" not in a)


True
False

位运算符

image.png

位与、位或

print(4&8)
print(4|8)

结果:
0
12

解析:
转化为二进制
4: 0 0 0 0 0 1 0 0
8: 0 0 0 0 1 0 0 0


&:位与,上下相位与,对位数位必须全是1,才是1,否则是04:  0 0 0 0 0 1 0 0
8:  0 0 0 0 1 0 0 0
4&8 0 0 0 0 0 0 0 0
位与下来是00000000,所以是0


|:位或,上下相位或,对位只要有1,那就是1,否则都是04:  0 0 0 0 0 1 0 0
8:  0 0 0 0 1 0 0 0
4|8 0 0 0 0 1 1 0 0
位或下来是00001100,所以是12

位运算

print(4<<1)
print(16>>2)

结果:8 4

解析:
转化二进制
40 0 0 0 0 1 0 0
160 0 0 1 0 0 0 0

向左移一位,变为
4:     0 0 0 0 0 1 0 0
4<<1:0 0 0 0 0 1 0 0        //多出来的删掉,少的补0
       0 0 0 0 1 0 0 0      //等于8
       
同理16向右移两位,从00010000变成00000100

分支结构

image.png

if-else写法

if 条件表达式:
    条件执行体1
else :
     条件执行体2

取款机:

money=int(1000)   #余额
print("目前余额",money)
s=int(input("请输入取款金额") )  #取款金额,注意转化类型
# 判断余额
if money>=s:
    money=money-s
    print("取款成功,余额为:",money)
else:print("取款失败,目前余额",money)


结果:
目前余额 1000
请输入取款金额12000
取款失败,目前余额 1000

目前余额 1000
请输入取款金额 690
取款成功,余额为: 310

分辨奇数偶数:

a=int(input("输入一个整数"))    //注意将a转化成int类型
if a%2==0:
    print(a,"是偶数")
else:print(a,"是奇数")


结果:
输入一个整数12
12 是偶数

输入一个整数9
9 是奇数

多if-else写法(与java不同)

image.png

注意是elif

分数:

a=int(input("输入你的成绩"))
if a>=90 and a<=100:
    print("A")
elif a<90 and a>=80:
    print("B")
elif a<80 and a>=70:
    print("C")
elif a<70 and a>=60:
    print("D")
else:
    print("不及格")
    
    
    
Python专属写法:
a=int(input("输入你的成绩"))
if 90<=a<=100:
    print("A")
elif 80<=a<=89:
    print("B")
elif 70<=a<=79:
    print("C")
elif 60<=a<=69:
    print("D")
else:
    print("不及格")

嵌套

image.png

打折问题:

answer=input("你是会员吗?输入是否")
if answer=="是":
    print("是会员啊,输入你的消费金额")
    money=float(input())
    if money >=200:
        print(money*0.5)
    else:print(money)

else:
    print("不是哦,那输入你的消费金额")
    money = float(input())
    if money >= 200:
        print(money * 0.8)
    else:
        print(money)
     
     
你是会员吗?输入是否  否
不是哦,那输入你的消费金额
1000
800.0       

条件表达式

比大小:


num1=int(input("输入第一个整数"))
num2=int(input("输入第二个整数"))
# 比大小
if num1>num2:
    print(num1,">" ,num2)
else:
    print(num1,"<" ,num2)
    
    
    
    
Python特殊写法:

print( str(num1)+'>'+str(num2)  if num1>num2  else str(num1)+'<'+str(num2))


输入第一个整数20
输入第二个整数10
20>10

pass语句

image.png

answer=input("你是会员吗?输入是否")
if answer=="是":
   pass
else:
    pass

总结

image.png

循环

range函数

是内置函数,可以直接使用,用于生成一个序列; 返回值是一个迭代器对象

1、
r=range(10)    //什么都不设置,默认全初始
print(r)    #(0,10)
print(list(r))   #用于查看range中的序列

range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

-------------------------------------------------------------


2、
r=range(1,10)    //1~10
print(r)    
print(list(r))   

range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

----------------------------------------------------------------
3、
r=range(1,10,2)    //1~10  步长为2
print(r)    
print(list(r)) 

range(1, 10, 2)
[1, 3, 5, 7, 9]


print(10 in r)   //判断10是否在序列里面
是就True
不是就False

while循环

image.png

a=0
while a<10:
    a+=1
    print(a)
    
    
结果:
1
2
3
4
5
6
7
8
9
10

1~100之间的偶数和:

a=0
sum=0
while a<10:
    a+=1
    sum+=a
print(sum


a=1
sum=0
while a<=100:
    if a%2!=0:
     sum+=a
    a+=1       //注意这里的空格,不能和上一段对齐,Python中对缩进要求很严格
print(sum)

结果:
2550

for-in循环

image.png

for a in "123345":     //第一次取出1,将1赋值给a,输出a
    print(a)
    
    
结果:
1
2
3
3
4
5
for item in range(10):    //range函数也可以
    print(item)
结果:
0
1
2
3
4
5
6
7
8
9    
for _ in range(1,3):     //如果在循环体内不需要使用到自定义变量,可以写为“_”
    print("人生苦短")
结果:
人生苦短
人生苦短

1~100之间的偶数和:

sum=0
for a in range(0,101):     //注意这里要取到101,不然100不算在内
    if a%2==0:
      sum+=a
print("1~100之间的偶数和",sum)

结果:
2550

水仙花数:

print("水仙花数:")
for item in range(100,1000):
    a=item%10    #个位
    b=item//100   #百位,注意整除是双斜杠//
    c=(item//10)%10  #十位
    if a**3+b**3+c**3==item:
        print(item)
        
结果:
水仙花数:
153
370
371
407

流程控制语句break

image.png ATM机输入密码

for _ in range(3):
    pwd=input("输入密码")
    if pwd=="8888":
        print("密码正确")
        break
    else:
        print("密码错误")



结果:
输入密码13
密码错误
输入密码123
密码错误
输入密码5
密码错误

a=0
while a<3:
    pwd=input("输入密码")
    if pwd=="8888":
        print("密码正确")
        break
    else:
        print("密码错误")
        a+=1                  #注意要写a+=1,不然会一直循环

流程控制语句continue

image.png 输出1~50之间,所有5的倍数

正常写法:
for item in range(1,51):
    if item%5==0:
         print(item)
         
         
         
         
continue写法:     
for item in range(1,51):
    if item%5!=0:
        continue
    print(item)

else语句

image.png

for item in range(3):
    pwd=input("输密码")
    if pwd=="8888":
        print("yes")
        break
    else:
        print("no")
else:
    print("输入达到上限,明天再说吧")

嵌套循环

image.png 矩形

for hang in range(1,4):         #行表,执行3次,所以3for lie in range(1,3):      #每行执行2print("*",end="\t")     #不换行输出
    print()  #换行   
    
*	*	
*	*	
*	*    

三角形

for hang in range(1,5):     #行表,执行3次,所以3for lie in range(1,hang+1):  #每行执行2print("*",end="\t") #不换行输出
    print()  #换行
    
*	
*	*	
*	*	*	
*	*	*	*	    

九九乘法表

for hang in range(1,10):         #行表,执行9for lie in range(1,hang+1):      #每行执行2print(lie,"*",hang,"=",hang*lie,end="\t")     #不换行输出
    print()  #换行
    
    
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   

二重循环中的break和continue

image.png break

for i in range(5):
    for j in range(1,10):
        if j%2==0:
            break
        print(j)      #从1开始,1÷2的余数不等于0,所以输出1,然后跳2,2÷20break,进入第二个循环
结果:
1
1
1
1
1
----------------------------------------------------------------------------
for i in range(5):
    for j in range(10):     #这里是从0开始,0取余2一直为0,所以breakbreak五次之后输出空白
        if j%2==0:
            break
        print(j)
        
结果:
空白

----------------------------------------------------------------------------------------

for i in range(5):
    for j in range(1,10):
        if j%3==0:
            break
        print(j,end="\t")
    print()

结果:
1	2	
1	2	
1	2	
1	2	
1	2	

continue

for i in range(5):
    for j in range(1,10):
        if j%3==0:                             #遇到三的倍数就跳过,不是就输出
            continue
        print(j,end="\t")

    print()
    
    
结果:    
1	2	4	5	7	8	
1	2	4	5	7	8	
1	2	4	5	7	8	
1	2	4	5	7	8	
1	2	4	5	7	8	    

总结

image.png

列表

image.png

变量存储: image.png

列表储存:

image.png

列表的创建删除

image.png

lst=["123","312"]
print(lst)

lst2=list(["qweqweqwe","qweqwe"])
print(lst2)

结果:
['123', '312']
['qweqweqwe', 'qweqwe']

列表特点:

image.png

列表查询操作

image.png

lst=["hello","world",98,"hello"]
print(lst.index("hello"))      #返回列表中元素的索引值,如果列表中有相同元素,那只返回第一个
print(lst.index("hello",1,4))  #在列表1~4的范围中查找hello,找到的是索引为3的“hello”

print(lst[0])                  #通过索引获取列表里的值
print(lst[2])
print(lst[-3])                 #负数就是从第一个元素0开始,往最后倒数,比如这里最后一个hello是-1,98是-2,world是-3

print(lst[10])                 #超出范围 IndexError: list index out of range
print(lst[-10])                #超出范围 IndexError: list index out of range


结果:
0
3
hello
98
world
error
error

切片:

image.png

lst=[10,20,30,40,50,60,70,80]
print(lst[0:4])   //从0开始
print(lst[1:6])


结果:
[10, 20, 30, 40]
[20, 30, 40, 50, 60]
lst=[10,20,30,40,50,60,70,80]
print(lst[0:4])
lst2=lst[1:6]
print(id(lst),lst)    #查看id
print(id(lst2),lst2)


结果:
[10, 20, 30, 40]
2329551515136 [10, 20, 30, 40, 50, 60, 70, 80]     //切出来的是一个新的列表
2329551357120 [20, 30, 40, 50, 60]
lst=[10,20,30,40,50,60,70,80]
print(lst[7:1:-1])   #反着来,从最后往前


结果;
[80, 70, 60, 50, 40, 30]

判断对象是否存在: image.png

lst=[10,20,30,40,50,60,70,80]

print(10 in lst)
print(100 in lst)
print(100 not in lst)


结果:
True
False
True

遍历:

lst=[10,20,30,40,50,60,70,80]

for item in lst:
    print(item)
    
    
    
10
20
30
40
50
60
70
80

列表增删改操作

增添:

image.png

lst=[10,20,30,40,50,60,70,80]

lst.append(90)     #添加90进入lst

lst2=["heelo"]
lst2.append(2)      #添加2进入lst2
lst.append(lst2)    #将lst2作为一个元素添加进lst
print(lst)


结果:
[10, 20, 30, 40, 50, 60, 70, 80, 90, ['heelo', 2]]
lst=[10,20,30,40,50,60,70,80]


lst.append(100)
lst.insert(1,90)    #在1的位置添加90,原来是1位置的20向后移一位
print(lst)



结果:
[10, 90, 20, 30, 40, 50, 60, 70, 80, 100]

删除:

image.png

lst=[10,20,30,40,50,60,70,80]
lst.remove(30)     #删除30
print(lst)

结果:
[10, 20, 40, 50, 60, 70, 80, 100]
lst=[10,20,30,40,50,60,70,80]

lst.pop(5)    #移除索引为5的元素,如果不指定参数索引,默认删除最后一个元素
print(lst)

[10, 20, 30, 40, 50, 70, 80]   #60被移走了
lst=[10,20,30,40,50,60,70,80]

lst[1:5]=[]   #将1后面四个元素替换为空
print(lst)


结果:
[10, 60, 70, 80]
lst.clear()   #清除列表内容
del  lst      #注意写法,这个是直接删除整个列表

修改:

image.png

lst=[10,20,30,40,50,60,70,80]
lst[1]=9

print(lst)


结果:
[10, 9, 30, 40, 50, 60, 70, 80]
lst=[10,20,30,40,50,60,70,80]
lst[1:3]=[100,200,400]    #将1~3元素切片(不包括3),替换为100,200,400

print(lst)

结果:
[10, 100, 200, 400, 40, 50, 60, 70, 80]

列表元素排序

image.png

lst=[10,20,100,30,70,80,40,50,60]


print(lst,id(lst))
lst.sort()
print(lst,id(lst))


lst.sort(reverse=True)     #降序排序,T要大写
print(lst)



lst1=sorted(lst)    #内置函数sorted,升序




结果:
[10, 20, 100, 30, 70, 80, 40, 50, 60] 1871606000768
[10, 20, 30, 40, 50, 60, 70, 80, 100] 1871606000768
[100, 80, 70, 60, 50, 40, 30, 20, 10]
[10, 20, 30, 40, 50, 60, 70, 80, 100]

列表生成式

image.png

lst1=[i for i in range(0,10)]         #创建一个i列表,为0~10,赋予lst1,输出i
lst2=[i*2 for i in range(0,6)]        #创建一个i列表,为0~6,赋予lst2,输出i*2,1234变成2468
lst3=[i*i for i in range(0,6)]

print(lst1)
print(lst2)
print(lst3)


结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8, 10]
[0, 1, 4, 9, 16, 25]

总结

image.png