人生苦短,我用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])