python学习笔记

numpy

pandas

is / not is 比较的是内存地址

== / != 比较的是值

end = '' 不换行输出

*表达式受值传参,多余或者差值,都以列表形式显示

字典函数dict(键=“值”,……)

enumerate() 遍历列表,返回两个参数 索引,对应值

list_1 = [1,2,3,4,5,6,7,['a','b','c']]
print(list_1)
print(type(list_1))
print(list_1[7][2])
​
#元组可以作为字典的键,列表不行
#华氏温度转为摄氏温度

# F = int(input("用户输入的数字\n"))
#
# c = (F-32)/1.8
#
# print(c)
​
#输入圆的半径计算周长与面积

# r = int(input("给入半径大小\n"))
#
# c = 3.14 * 2 * r
# s = 3.14 * r **2
# print("周长等于" , c)
# print("面积等于" , s)
#判断年份是不是闰年
n =  int(input("请输入年份\n"))
if n % 4 == 0:
    if n % 100 == 0:
        if n % 400 ==0:
            print("ture")
            print("是闰年")
        else:
            print("false")
            print("不是闰年")
    else:
        print("true")
        print("是闰年")
else:
    print("false")
    print("不是闰年")

.Format

1.不需要在意数据类型问题

2.一个参数可以多次输出,且不需要在意参数的顺序

3.填充方式灵活且对方式便捷等

name1 = ["python" , "lol"]
name2 = ["aaa" , "bbb"]
print("I am {0[0]} ! I am{0[1]}! you are {1[0]} ! you are {1[1]}" .format(name1 , name2))

类Class

:^居中对齐

:<左对齐

:>右对齐

:$<左对齐,剩余空位用$符号填充

:>右对齐,剩余空位用符号填充

print('{:*^10}' .format("lol"))

切片

info2 = [1,2,3,4,5,6,7,8,9]
 #输出单数
print(info2[0::2])
 #输出双数
print(info2[1::2])
 #输出3的倍数
print(info2[2::3])
​
​

转义字符

\n换行 \t制表符 r或者R:使所有的转义失效

find

(查找的字符串,开始位置,结束位置)

查找到的是下标索引

找不到给值-1

index

(查找的字符串,开始位置,结束位置)

查找到的是下标索引

找不到报错

九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print("%d * %d = %2d " % (j,i,j*i), end='')
    print("")

列表的插入与删除

1.append() 向列表添加单一元素

2.extend() 可以将一个列表添加到另一个列表中,会插入在所在列表末尾 格式:Listname.extend(列表名)

3.insert() 向列表添加单一元素,自定义位置 格式:Sname.insert(索引位置,插入的元素)

1.remove()函数进行删除 格式:Sname.remove(元素名)

2.del()函数 执行完删除操作不会返回删除的元素

3.pop()函数 会将删除的元素返回

清空字典

clear()

maketrans()加密解密

table1 = "abcdefghijklmnopqrstuvwxyz"
table2 = table1[1:] + table1[0:1]
data = "you are my only one lmj"
table = str.maketrans(table2,table1)            形成字典,键值对
print("加密后的明文是: %s" %(data.translate(table)))
​
data2 = "xnt zqd lx nmkx nmd kli"
table3 = str.maketrans(table1,table2)
print("解密后的明文是: %s" %(data2.translate(table3)))
​
print(table3)      # 打印映射表里对应的ASCII

items()函数遍历字典键值对

fruitprice = {'西瓜':3 ,'香蕉':2 ,'苹果':4 ,'橙子':3 ,'哈密瓜':6 ,'芒果':8}
for i,x in fruitprice.items():
    print('key:' ,i ,'value:' ,x)

字典函数

len(字典名) 计算字典的元素个数

str(字典名) 使用可打印的字符串方式输出字典

type(字典名) 返回变量类型

字典名.copy() 复制一个字典

字典名.get(key,default) 返回指定键的值,如果值不在字典中,返回default

第六章 函数

def关键字定义函数

在定义函数时,指定的默认参数必须放在最后,且默认参数必须是不可变型的

计算矩形面积函数

def rectangle(width,height):
    area = width * height
    print("矩形的面积为:" + str(area))
rectangle(3,4)          #自己设定用键盘录入

parament

接收任意多个实际参数并将其放到一个元组中

#*parament形式的可变参数

def printinfo(arg1, *parament):
    print("输出:")
    print(arg1)
    print(parament)
​
printinfo(50,60,70)

#**parament形式的可变参数

可以任意多个显示赋值的实际参数,并将所有赋值的参数一起放到一个字典里

return

函数返回值,可以是任意类型,只要执行到return直接结束该函数

global关键字

global关键字修饰局部变量后变成全局变量

nonlocal关键字

nonlocal关键字必须使用在嵌套函数中,将变量声明为外层变量

匿名函数

result = Lambda[arg1[,arg2,…argn]]:expression

numbers = [1,2,3,4,5]
​
#使用map()函数将列表中的每个元素平方
squared_numbers = list(map(lambda x:x**2,numbers))
print(squared_numbers)

试一下全局变量、局部变量

def one():
    num = "00"
    def two():
        num ="11"
    def three():
        nonlocal  num
        num = "22"
    def four():
        global num
        num = "33"
    two()
    print(num)
    three()
    print(num)
    four()
    print(num)
one()
print(num)

res = lambda x,y:x+y
def test(a,b,func):
    result = func(a,b)
    print(result)
test(11,22,res)

stus =[
    {"name":"zhangsan","age":18},
    {"name":"lisi","age":19},
    {"name":"wangwu","age":17}
]
stus.sort(key=lambda x:x["age"])        #内置函数为sort()
for stu in stus:
    print(stu)

两种方式求0-100的总和

for循环
def sum_hundred(n):
    sum = 0
    for i in range(0,n+1):
        sum +=i
    print(sum)
​
sum_hundred(100)
​
递归方式
def  sum_recu(n):
    if n>0:
        return n + sum_recu(n-1)
    else:
        return 0
​
sum = sum_recu(100)
print(sum)

str = "i'm yuan shen"
print(str.capitalize())

strip

删除字符串左右两端指定的字符

lstrip 删除字符串左侧指定字符

rstrip 删除字符串右侧指定字符

replace 替换指定字符串 格式:.replace("需要被替换的字符",“替换的字符”)

startswith

表示以什么开始

# n = int(input("请输入一个数字\n"))
# if n <-1:
#     print(5 * n+3)
# elif n>=-1 and n<=1:
#     print(n +2)
# else:
#     print(3 * n -5)
​
​
#评级
n = int(input("输入一个成绩"))
    if n <=60:
        print("E")
    elif n <=70:
        print("D")
    elif n <= 80:
        print("C")
    elif n <=90:
        print("B")
    else:
        print("A")
​
​
# def f(x,y,z):
#     if x + y > z or x + z > y or y + z > x:
#         print("能构成三角形")
# 
#         print("三角形周长为" , (x+y+z))
#         s = int((x + y + z) / 2)
#         print(s)
#         area = (s*(s - x)*(s - y)*(s - z)) ** 0.5
#         print("三角形面积为", area)
# 
#     else:
#         print("不能构成三角形,请注意边长赋值")
# 
# 
# a =int(input("请输入第一条边长\n"))
# b =int(input("请输入第二条边长\n"))
# c =int(input("请输入第三条边长\n"))
# f(a,b,c)

#判断一个数是不是素数
n = int(input("请输入一个正整数\n"))
​
def is_prime_number(n):
    a = "不是素数"
    b = "是素数"
    #0和1不是素数
    if n < 2:
        return a                        #返回值,不执行后面的代码
    else:
        # 判断是否能被2到根号num之间的数整除
        for i in range(2, int(n ** 0.5) + 1):
            if n % i == 0:
                return a
            #如果都不能被整除,那这个数就是素数
        return b
print(is_prime_number(n))

def gcd(a,b):
    while b !=0:
        a,b = b,a%b
        return a
​
def lcm(a,b):
    return a*b // gcd(a,b)
​
num1 = int(input("请输入第一个数"))
num2 = int(input("请输入第二个数"))
​
gcd_result = gcd(num1,num2)
lcm_result = lcm(num1,num2)
​
print("最大公因数是:" , gcd_result)
print("最小公倍数是:" , lcm_result)

#寻找水仙花数
#一个三位数,该数字每个位上数字的立方之和正好等于它本身。


s = input("请输入百位数所在位\n")
x = input("请输入十位数所在位\n")
h = input("请输入个位数所在位\n")
n = int(s + x + h)
​
sum = int(s) **3 + int(x) **3 + int(h) **3
if n == sum:
    print("是水仙花数")
else:
    print("不是水仙花数")

arr = []
for i in range(100,1000):
    g = (i % 10)**3                 //"//"整除
    s = (i //10 %10)**3
    b = (i // 100)**3
    if g+s+b == i:
        arr.append(i)
print(arr)

#百钱百鸡
#公鸡5元一只,母鸡3元一只,小鸡1元三只
for gj in range(0,101):
    for mj in range(0,101):
        for xj in range(0,301,3):
            if gj + mj + xj == 100 and 5*gj + 3*mj + xj//3 == 100:
                print(f"公鸡个数:{gj},母鸡个数:{mj},小鸡个数:{xj}")

#CRAPS赌博游戏
#两枚骰子       第一次   7  11:玩家胜;     2  3 12:庄家胜
#             第n次   第一次的点数 :玩家胜     7   : 庄家胜

from random import randint
​
​
capital =1000
print("启动资金:" , capital)
​
​
while capital>0:
    n = 1
    num = int(input("请下注:"))
    point = randint(1,6) + randint(1,6)
    print("骰子点数为:" , point)
    if point == 7 or point == 11:
        print("玩家胜")
        capital +=num
        print(f"用户资金:{capital}")
​
    elif point == 2 or point == 3 or point == 12:
            print("庄家胜")
            capital -=num
            print(f"用户资金:{capital}")
            if capital == 0:
                print("耶,你把钱输光了~~~")
            break
    else:
        while True:
​
            n += 1
            first_point = point
            point2 = randint(1,6) + randint(1,6)
            print(f"第{n}回合骰子点数为:{point2}")
            if point2 == first_point:
                print("玩家胜")
                capital += num
                print(f"用户资金:{capital}")
                break
            elif point2 == 7:
                print("庄家胜")
                capital -=num
                print(f"用户资金:{capital}")
                n = 1
                break
else:
    print("耶,你把钱输光了~~~")
​
​

#斐波那契数列
#数列前两个数都是1,从第三个数开始,每个数都是前两个之和

def fibonacci(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)
​
n = 100
for i in range(n):
    fib = fibonacci(i)
    if fib > n:
        break
    print(fib,end=" ")
    
#斐波那契数列
#数列前两个数都是1,从第三个数开始,每个数都是前两个之和

array = [1,1]
for i in range(0,100):
    for array_i in array:
        if i == array[-1] + array[-2]:
            array.append(i)
​
print(array)
​
#或者
array = [1,1]
for i in range(2,100):
    new_number = array[i-1] + array[i-2]
    array.append(new_number)
print(array)

#打印一百以内的素数
for i in range(2,101):
    for n in range(2,i):
        if i%n == 0:
            break
        elif n == i-1:
            print(i,end=" ")

#扔骰子,统计点数

from random import randint
randint(1,6)
​
array = []
for i in range(6001):
    if i > 0:
       n = randint(1,6)
       array.append(n)
​
print(array.count(1))
print(array.count(2))
print(array.count(3))
print(array.count(4))
print(array.count(5))
print(array.count(6))
​
#改进
import random
​
counters = [0] * 6
for n in range(6001):
    face = random.randint(1,6)
    counters[face - 1] +=1
for face in range(1,7):
    print(f"{face}点出现了{counters[face - 1]} 次")

class Solution:
​
  def isPalindrome(self, x: int) -> bool:
​
•    return str(x) == str(x)[::-1]              //回文数

递归计算

先写递归公式,再在上方写上必要值条件return返回值

#打印日历
import calendar
​
cal = calendar.month(2023,12)
print("Here is the calendar of 12:")
print(cal)

随机函数

random() 0——1之间的随机浮点数

uniform() 两者间的随机浮点数,两者位置可以颠倒

randint() 生成两者间随机整数,两者必须为整数,且左<右

choice(sequence) 从sequence内返回一个随机数,可以是列表,元素或字符串

shuffle(x[,random]) 将列表元素打乱顺序,也称“洗牌”,改变原有序列

sample() 从指定序列中随机获取K个元素作为一个片段返回

# 创建一个列表
import random

my_list = [1, 2, 3, 4, 5]

# 使用sample()函数从列表中随机选择3个元素
selected_elements = random.sample(my_list, 3)

# 输出随机选择的元素
print(selected_elements)

class Person:  

  def __init__(self, name, age):    

​    self.name = name    

​    self.age = age   

  def __str__(self):      

  return f"{self.name} is {self.age} years old." 

# 

创建一个 Person 对象 person = Person("Alice", 30) # 使用 str() 函数将对象转换为字符串 print(str(person)) # 输出: Alice is 30 years old.

判断是否主线程运行

if name == "main":

people = "我是一个中国人"
def fun_dream():
    print("QWQ")

if __name__ == "__main__":              #是否直接运行的本模块,如果是,TRUE,运行以下代码,否为FALSE
    fun_dream()
    people = people+"我正在全力以赴"
    print(people)

魔法函数

*repr

try:
    a = input()
    if(not a.isdigit()):
        raise (ValueError("走人"))

except ValueError as e:
    print("抛出异常",repr(e))

encode() 将字符串转化为字节 括号内写编码格式,如"utf-8"

decode() 将字节转化为字符串 括号内写编码格式,如"utf-8"

  • 42
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值