python复习

人生苦短,我用Python


numpy库

1、引入

import numpy as np
a = np.arange(15).reshape(3, 5)    //自动生成矩阵
print(a.shape)

2、数组的创建

import numpy as np
a = np.array([2,3,4])
print(a)
b = np.array([(1.5,2,3), (4,5,6)])   //二维数组

np.zeros( (3,4) )   //随机创建数组

3、打印数组

import numpy as np
a = np.arange(6)
print(a)   //一维数组

b=np.arange(12).reshape(4,3)  //二维
print(b)

4、基本操作

import numpy as np
a = np.array( [20,30,40,50] )
b = np.arange( 4 )
c = a-b
b**2

5、索引、切片和迭代

a = np.arange(10)**3
a[2]
a[2:5]

b[-1]  //反转数组

pandas库

1、生成对象

import numpy as np
import pandas as pd
s = pd.Series([1, 3, 5, np.nan, 6, 8])

df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

python基础

1、倒序输出列表 ls 中的值

ls = ['one','two','three']
for i in ls[::-1]:
    print(i)

2、输出

>>> "我叫%s"%'小明' '我叫小明'
>>> "我叫%s,今年%d 岁了"%('小明',18)
'我叫小明,今年 18 岁了'
>>> "我叫%(name)s,今年%(age)d 岁了"%{'name':'小明','age':18}
'我叫小明,今年 18 岁了'
>>> print("%10x"%10) 右对齐,占 10 个位置,16 进制,负号左对齐
 a
>>> print("%04d"%5)
0005
>>> print("%.3f"%2.3)
2.300

print("{} * {} = {:-2d}".format(j, i, i * j))  

print("words 的长度为:%d"%len(words))


• lower():转换为小写
• upper():转换为大写

• isdecimal() :如果字符串中只包含十进制数字则返回 True,否则返回
False 
• isdigit() :如果字符串中只包含数字则返回 True,否则返回 False 
• isnumeric() :如果字符串中只包含数字则返回 True,否则返回 False 
• isalpha() :如果字符串中至少有一个字符,并且所有字符都是字母则返回
True,否则返回 False 
• isalnum() :如果字符串中至少有一个字符,并且所有字符都是字母或数
字则返回 True,否则返回 False

• find(sub, start=None, end=None)
• index(sub, start=None, end=None)

• startswith(prefix, start=None, end=None):判断字符串前缀
• endswith(suffix, start=None, end=None):判断字符串后缀

• replace(old, new, count=None)

• split(sep=None, maxsplit=-1) //分隔字符

print(s[::-1])   //倒序输出

3、元素的基本类型

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )   //元组,内部元素用,隔开,元组是只读数据
tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}   //字典由由key和value组成

4、算术运算符

+加      -减      *乘       /除 
%	取模 -返回除法的余数	
**	幂 -返回x的y次幂	a**b 为10的20次方
//	取整除 -返回商的整数部分(向下取整)

5、python字符串格式化符号

 	 %c	 	 格式化字符及其ASCII码
      %s	 格式化字符串
      %d	 格式化整数
      %u	 格式化无符号整型
      %o	 格式化无符号八进制数
      %x	 格式化无符号十六进制数
      %X	 格式化无符号十六进制数(大写)
      %f	 格式化浮点数字,可指定小数点后的精度
      %e	 用科学计数法格式化浮点数
      %E	 作用同%e,用科学计数法格式化浮点数
      %g	 %f和%e的简写
      %G	 %F 和 %E 的简写
      %p	 用十六进制数格式化变量的地址

6、列表

list=['faf','faf', 'efe']
print(list)
print(list[2])
list.append('Google')   ## 使用 append() 添加元素
del list1[2]

cmp(list1, list2)	比较两个列表的元素
len(list)	列表元素个数
max(list)	返回列表元素最大值
min(list)	返回列表元素最小值
list(seq)	将元组转换为列表

list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)将对象插入列表
list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项

**list.reverse() 反向列表中元素**

list.sort(cmp=None, key=None, reverse=False)
对原列表进行排序

7、元组

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tup1 = ('physics', 'chemistry', 1997, 2000)
tup1 = (50,)   # 一个元素时需要加括号
不允许修改
del tup   # 删除元组

python练习

1、不同数字

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if( i != k ) and (i != j) and (j != k):
                print (i,j,k)

2、完数

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

for i in range(1,85):
    if 168 % i == 0:
        j = 168 / i;
        if  i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 :
            m = (i + j) / 2
            n = (i - j) / 2
            x = n * n - 100
            print(x)

3、排序

输入三个整数x,y,z,请把这三个数由小到大输出

l = []
for i in range(3):
    x = int(input('integer:\n'))
    l.append(x)
l.sort()
print (l)

4、斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2)
# 输出了第10个斐波那契数列
print (fib(10))

5、9*9乘法表

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

6、兔子问题

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

f1 = 1
f2 = 1
for i in range(1,22):
    print ('%12ld %12ld' % (f1,f2), end=" ")
    if (i % 3) == 0:
        print ('')
    f1 = f1 + f2
    f2 = f1 + f2

7、素数问题

判断101-200之间有多少个素数,并输出所有素数。

h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
    k = int(sqrt(m + 1))
    for i in range(2,k + 1):
        if m % i == 0:
            leap = 0
            break
    if leap == 1:
        print ('%-4d' % m)
        h += 1
        if h % 10 == 0:
            print ('')
    leap = 1
print ('The total is %d' % h)

8、水仙花数

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

for n in range(100,1000):
    i = n // 100
    j = n // 10 % 10
    k = n % 10
    if n == i*i*i + j*j*j + k*k*k: 
        print(n)

9、正整数分解成质因数

将一个正整数分解质因数。例如:输入90,打印出90=233*5

def reduceNum(n):
    print ('{} = '.format(n), end=" ")
    if not isinstance(n, int) or n <= 0 :
        print ('请输入一个正确的数字 !')
        exit(0)
    elif n in [1] :
        print ('{}'.format(n))
    while n not in [1] : # 循环保证递归
        for index in range(2, n + 1) :
            if n % index == 0:
                n //= index # n 等于 n//index
                if n == 1: 
                    print (index )
                else : # index 一定是素数
                    print ('{} *'.format(index), end=" ")
                break
reduceNum(90)
reduceNum(100)

10、分数表示

利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

score = int(input('输入分数:\n'))
if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'
print ('%d 属于 %s' % (score,grade))

11、指定输出日期格式

import datetime
if __name__ == '__main__':
    输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法

  print(datetime.date.today().strftime('%d/%m/%Y'))

创建日期对象

    miyazakiBirthDate = datetime.date(1941, 1, 5)   print(miyazakiBirthDate.strftime('%d/%m/%Y'))

日期算术运算

    miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)

    print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))

日期替换

    miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)   print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))

12、完数

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

from sys import stdout
for j in range(2,1001):
    k = []
    n = -1
    s = j
    for i in range(1,j):
            if j % i == 0:
                n += 1
                s -= i
                k.append(i)
    if s == 0:
        print (j)
        for i in range(n):
            stdout.write(str(k[i]))
            stdout.write(' ')
        print (k[n])

13、猴子吃桃

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

x2 = 1
for day in range(9,0,-1):
    x1 = (x2 + 1) * 2
    x2 = x1
print (x1)

14、递归求5!

def Factorial(n):
    if n == 1:
        fn=1
    else:
        fn = n*Factorial(n-1)
    return fn
print(Factorial(5))

15、回文数

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

a = int(input("请输入一个数字:\n"))
x = str(a)
flag = True
for i in range(len(x)//2):
    if x[i] != x[-i - 1]:
        flag = False
        break
if flag:
    print ("%d 是一个回文数!" % a)
else:
    print ("%d 不是一个回文数!" % a)

16、按逗号分隔列表

L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L)
print (s1)

18、100以内的素数

lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
for num in range(lower,upper + 1):
    # 素数大于 1
    if num > 1:
        for i in range(2,num):
            if (num % i) == 0:
                break
        else:
            print(num)

19、随机数生成

import random
for i in range(5):
    L1 = random.randint(1, 10)
    print(L1, end=' ')

# 不相等
import random
L1 = random.sample(range(1, 10), 5)
print(L1)

20、报数

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

if __name__ == '__main__':
    nmax = 50
    n = int(input('请输入总人数:'))
    num = []
    for i in range(n):
        num.append(i + 1) 
    i = 0
    k = 0
    m = 0
 
    while m < n - 1:
        if num[i] != 0 : k += 1
        if k == 3:
            num[i] = 0
            k = 0
            m += 1
        i += 1
        if i == n : i = 0
 
    i = 0
    while num[i] == 0: i += 1
    print(num[i])

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值