自学笔记 | Python基础知识 精简版

前言

本人有C语言基础(c++有一点但不多),上手应该还是很快的,所以主要记录一下Python与C的不同之处,便于快速掌握作为工具。

目录

前言

变量

数据类型

整数

浮点数

E记法(科学计数法)

数据运算

逻辑运算符

字符串

打印Print 注意事项

1.表示原始字符串

2.换行打印

3.输入

 语法篇

条件语句

循环语句

while

break&continue 

for

列表 

 多维列表

关于指针 

函数

函数参数

继承 

组合 

模块

random 随机数

 异常


#还没更完,还在学习...感觉放一篇博客里内容太多了,这篇就放基础语句吧。

变量

在python中 打印不再是 printf 而是 print 且没有 ""

1.与C不同的是,python支持中文作为变量名

小耶耶 = 123
print(小耶耶)

 2.变量交换位置

在C中,一般用中间变量temp 来交换

int x = 3, y = 9;
int temp;

temp = x;
x = y;
y = temp;

在python中也可以用中间变量,但是更精简的是:

x = 3
y = 9
x,y = y,x
print(x,y)

数据类型

python的数据类型包括整数、浮点数和复数

整数

python整数长度不限,有无限大精度。在进行整数除法时,结果就是小数(无论是否整除)

浮点数

python的浮点数计算有时会带有误差

为了避免这种情况,我们引用decimal(十进制)

import decimal

#用法如下,要将浮点数写成字符串
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
print(a+b)

运算式不能之间和浮点数比较,得再引入一个变量

E记法(科学计数法)

0.0003表示为3e-4 (e-0x表示10的负x次方)  能看懂就行

复数

x = 3+7j
#通过x.real获取实部
#通过x.imag获取虚部
a = x.real
b = x.imag
c = a+ b

数据运算

详细数据运算https://blog.youkuaiyun.com/qq_42585108/article/details/118490319

可以看这个,根据需要去写,我这里就写一下其他的补充。

x // yx除以y的结果(地板除)
abs(x)x的绝对值
int(x)将x转化为整数
float(x)将x转化为浮点数
complex(re,im)返回一个复数;re为实部,im为虚部
c.conjugate()返回c的共轭复数
divmod(x,y)返回(x//y , x%y)
pow(x,y)计算x的y次方
x ** y计算x的y次方

其他的和C一样,这里整数除法是浮点数,不用担心只取整了。但是这个地板除(//)就和C语言的整数相除一样(负数不一样),只保留比结果小的最大整数

对于复数,abs(3=4j)返回的就是复数的模的大小(还是很方便计算复数的)

#求复数的模计算
#r如果你没有计算器,但是你恰好有pythonIDLE

abs(3.8+6.1j)

逻辑运算符

运算符描述
and 布尔“与”运算符,返回两个变量“与”运算的结果
or 布尔“或”运算符,返回两个变量“或”运算的结果
not布尔“非”运算符,返回对变量“非”运算的结果

和数电(and 就是与运算 or 是或运算 not是取反)不同,python是布尔运算,遵从短路逻辑(从左到右,当第一个数逻辑无法确定逻辑运算的结果时继续对第二个数判断,否则就返回)

举例子:

0 or 1
1 or 0

0 and 1
1 and 0

3 and 4
4 and 3

5 or 6
6 or 5

对于or 返回真的那个数(非0)    从左到右,返回第一个真的数

对于and 如果同为真,从左到右依次判断真,返回最后一个真的数,有假(0)返回0

 优先级 not > and >or

0 or 1 and 0  -->  0 or 0 --> 0

字符串

1.字符串可以用 单引号 或者 双引号 (英文)来表示,没有区别

#打印字符串
#单引号
print('You are the best!')


#如果遇到let's go.这种含有单引号的句子就会使字符串产生歧义
#这个时候就可以用双引号。同理如果双引号有歧义,可以用单引号。
#此外 如图换行符号 \n 可以用 \' 表示单引号 \" 表示双引号


print("let's go!")

2.写一首诗(三引号的用法)

#''' content ''' 也可以
#三引号字符串是可以换行滴

poetry = """
Remember that you must behave in life as at a dinner party. 
Is anything brought around to you? 
Put out your hand and take your share with moderation. 
Does it pass by you? Don't stop it. 
Is it not yet come? 
Don't stretch your desire towards it, but wait till it reaches you.
将人生视如赴宴,在其中你的举止应当优雅得体。
当菜肴递到你面前时,可伸手取一份,但分量要合适;
如果菜肴只是从你眼前经过,就享用你盘中已有的食物;
如果菜肴还未传到你这里,就应该耐心等待。
"""
print(poetry)

3.字符串的加法乘法

 加法表示字符串拼接 乘法表示复制

'0417'+'1111'

print("practice makes perfect.\n"*10)

 运行结果

'04171111'

practice makes perfect.
practice makes perfect.
practice makes perfect.
practice makes perfect.
practice makes perfect.
practice makes perfect.
practice makes perfect.
practice makes perfect.
practice makes perfect.
practice makes perfect.

打印Print 注意事项

1.表示原始字符串

既然可以用 \ 加一个符号表示换行等意思,那么问题来了,如果我要打印一个地址呢?

#地址 D:\three\two\onw\now

print("D:\three\two\onw\now\n")

就会得到如下结果:

D:	hree	wo\onw
ow

嘶,由于 \t \n分别表示tab和换行所以就会出现问题,便捷的解决方法就是

#在字符串内容前面加上r,表示后面字符串为原始字符串
#也可以在\前再加一个\ 但是要打很多个会比较麻烦

print(r"D:\three\two\onw\now")

2.换行打印

在行末加上 \ 即可,表示未输完内容就可以回车换行了

print("     \
   点       \
   个       \
   赞       \
   吧       ")

3.输入

在C语言中我们可以这样表示输入

printf("Who are you?\n");
char name[30];
sacnf("%s",name);

在python中表示更简单

temp = input("who are you?\n")
#输入
print(temp)
#显示

input接收为字符串,如果要转化成整形可以加int

get = input("how old are you?\n")
age = int(get)
print(age)

 语法篇

条件语句

num = int(input("guess a num: \n"))
if num == 11:
    print("binggo!")
else:
    if num<11:
        print("小了")
    else:
        print("大了")
print("game over\n")

注意缩进!由于python没有()和{}  所以if else 下跟的执行代码一定要缩进。

如果不缩进和if/else 对齐则循序执行

else if 在python中写作elif

所以以上代码可以改为

num = int(input("guess a num: \n"))
if num == 11:
    print("binggo!")
elif num<11:
        print("小了")
else:
        print("大了")
print("game over\n")

补充:

在c语言中我们有

max = (a>b) ? a : b;

 表示a b之间取大的那个值赋值给max

在python中

max = a if a>b else b

循环语句

while
cnt = 5
while cnt>0:   
    num = int(input("guess a num: \n"))
    if num == 11:
        print("binggo!")
        break
    else :
        if num<11:
            print("小了")
        else:
            print("大了")
        cnt = cnt-1
print("game over\n")

话不多说,看代码:

1.缩进问题!不缩进就和对其的执行语句是并列的;所以在循环内的所有内容都需要缩进一下

2.和C很像,就是不加()、{}和 ; 了

感觉和c没区别,就是写起来更方便了

break&continue 

 

他们都只能作用于一层循环体 ,嵌套循环的时候只能跳一层哦

for

怎么说呢,python的for循环和c写法有些不同,但是呢逻辑一样

在c中

sum=0;
for(int 1 = 0;i<100;i++){
    sum+=i;
}

在python中

sum = 0
for i in range(100):
    sum+=i

 需要用range(a,b)来表示i的从a增加到b

也可以递减

我们来做一个嵌套小练习

请找出100以内的素数

for i in range(2,100):
    for j in range(2,i):
        if i%j == 0:
            break;
    else:
        print(i,"是素数")

解析:如果与循环并列使用else,只在循环完整执行完后(无break跳出)才进入else,否则是不进入else中执行的。

range(2,i)表示从2到i-1,不包含1和i本身,所以如果有整除的除数代表不是素数跳出此层循环和else,如果都没有整除,执行完循环顺次执行else,说明为素数 

列表 

emmm我觉得和c的数组很像,但是python更简单

列表支持各种类型数据放在一块

还可以各种顺序输出一个或者[a:b]范围的数据

列表 = [1,2,3,4.5,"第5个数"]

 

 使用起来和range很像

列表最后添加元素 列表.append()  列表.extend()或者列表[len(列表):] = [内容]

list = [1,2,3,4,5]
#只能插入一个元素
list.append(6)
#可以插入多个元素,以列表形式插入[xxx]
list.extend([6,7,8]) 
#切片方法  
list[len(list):] = [6,7,8]

 插入指定位置

#list.inster(position,content)
list.insert(0,99)

 删除list.remove(元素名)

#删除的元素是列表中存在的才可以
list.remove(99)

删除指定位置元素list.pop(position)

 全部清空list.clear()

元素替换

 list[position] = content #替换内容

 或者list[3:7] = [11,22,33,44,55]


排序

list.sort()从小到大排序

list.reverse()将现在排序倒过来

先运行第一个再运行第二个就是倒序排列

查元素个数 

list.count(查找元素名称) 返回值为元素个数

 查索引值(元素下标)

list.index(元素名)

copy列表

s = list.copy()
 多维列表

 maxarr[3][3]:

maxarr = [[0,1,2],
          [3,4,5],
          [6,7,8]]

 使用嵌套循环遍历或者初始化

for i in maxarr:
    for j in i:
        print(j,end=' ')
    print()

 初始化


关于指针 
x = [1,2,3]
y=x

这里y相当于指向c列表的指针,该y或者x其内容都会变

 如果想要单独修改可以将x内容cpoy到y 

y = x.copy() #但是这是浅copy,多维列表不适用

函数

看一下基本语法

def func():
    print("today is a normal day.")

1.用缩进代表函数里面内容

2. 调用的时候和c一样

函数参数

感觉和c一样

def func(a,b):
    c=a*b
    print(a,"*",b,"=")
    return c

先这样,日后补充更便捷的用法

对象 = 属性+方法  类里面的每一个函数第一个参数要写self

class Caculator:
    name = 'Yyy'
    price = 111
    bias = 7.0
    def weight(self,a,b,c,d):
        return (b-d)/(a-c)
    def liner_judge(self):
        print('is_liner_equal')

 引用:

c1 = Caculator()
print(c1.name,c1,price)

c1.price=c1.weight(1,4,5,12)+c1.bias

创建调用__init__

class SelfIntroduction:
    def __init__(self,name: str,age: int) -> None:
        self.name = name
        self.age = age
        print("我创建啦")

    def func1(self,skill: str):
        print(f"{self.name},{self.age}岁,拥有{skill}技能")

#main
def main():
    xiaoyeye = SelfIntroduction("xiaoyeye",24)
    xiaoyeye.func1("Study")

 

继承 

 很好理解,用沙子做玻璃杯,沙子为父类,玻璃为子类。玻璃包括沙子的特征但又有自己的特征

class A:
    name = 'A'
    def basic_type(self):
        print('沙子可以造什么')

class B(A):
    name = 'B'
    height = 10.5
    wide = 5

    def m_type(self):
        print('沙子造玻璃')

class C(B):
    name = 'C'
    price = 23

    def p_type(self):
        print('玻璃造杯子')
glass = C();
glass.basic_type()

这就是继承~

class Person:
    def __init__(self,name: str,age: int) -> None:
        self.name = name
        self.age = age
        print("我创建啦")

    def func1(self,skill: str):
        print(f"{self.name},{self.age}岁,拥有{skill}技能")

class Writer(Person):
    def __init__(self,name:str, age:int, book:str) -> None:
        super().__init__(name,age)
        self.book = book
    def writtenbook(self):
        print('\"我写过%s\"' %self.book)

#main
def main():
    鲁迅 = Writer("鲁迅",37,"朝花夕拾")
    鲁迅.func1("救人")
    鲁迅.writtenbook()

组合 

从一些类里面取需要的属性组合成起来

class Course:
    def __init__(self, name, period):
        self.name = name
        self.period = period

class Student:
    def __init__(self,name,year,course):
        self.name=name
        self.year=year
        self.course = course

def main():
    course = Course("python","8:00")
    student1= Student("zhang","firstman",course)
    print(f"{student1.name},{student1.year},今天{student1.course.period}上{student1.course.name}")

 

模块

random 随机数

要使用模块,需要先将其导入,就像C中加入#include一样,在python中采用import

import random

random.randint(n,m)

生成[n,m]范围内的随机数(准确的说是伪随机数)

#获取从1到100之间的一个随机数
import random

x = random.randint(1,100)

print(x)

 异常

代码调式时用

try:
    代码...
except:
    print("there is a error.")

将多个可能异常用元组包起来监测

try:
    代码...
except (ZeroDivisionError,ValueError,TypeError):
    print('There is a error.')
else:
    无异常继续执行的程序...
finally:
    结束程序

多线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值