19/03/16学习python总结

一、range()

range(start,end,step)
可以倒着输

for i in range(4,0,-1):
    print(i)
4
3
2
1

end=" " 控制输出

for i in range(4,0,-1):
    print(i,end=" ")
4 3 2 1 

二、列表解析

list1=[1,2,3,4,5]
print([x**2 for x in list1])

[1, 4, 9, 16, 25]

三、斐波那契数列

a,b=0,1
while b<= 100 :
    print(b,end=' ')
    a,b=b,a+b #先全部计算完,再赋值,右边执行顺序从左到右
1 1 2 3 5 8 13 21 34 55 89 

四、输出和为某个正整数的连续整数序列

print("请输入大于2的正整数:")
tsum=int(input())
while (tsum <=2):
    print("请输入大于2的正整数")
    tsum=int(input())
begin=1   #首元素
end=2    #尾元素
middle=(tsum+1)>>1 #获取中间值,相当于除以2
cursum=begin+end #连续序列的和,最小的序列和为1+2,所以从3开始
output=[] #保存头和尾的序列
while begin < middle:
    if cursum == tsum:  #相等找到一个
        output.append([begin,end])  #把头尾放进去最后用作range的范围
        end += 1  #为下一个序列做准备
        cursum += end
    elif cursum>tsum:  #如果大了,就砍掉左端
        cursum -= begin
        begin += 1  #相应地begin往后挪一个
    else:
        end += 1     #小了,加右端
        cursum+=end

if(len(output)!=0):   #输出的时候用range函数,注意format的用法
    print("有{0}种数列:".format(len(output)))
    for i in range(0,len(output),1):
        print("第{0}种数列:".format(i+1))
        for j in range(output[i][0],output[i][1]+1):
            print(j,end="  ")
        print()
else:
        print("没有符合条件的!")
请输入大于2的正整数:
500
有3种数列:
第1种数列:
8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  
第2种数列:
59  60  61  62  63  64  65  66  
第3种数列:
98  99  100  101  102  

请输入大于2的正整数:
8
没有符合条件的!

五、函数
所有形参按引用传递
在函数里修改形参,那么实参也会被改变
六、
快速排序
随便取一个数(用pop)
比他大的放在more,比他小的放在less

def quicksort (array):
    less=[]
    more=[]
    if len(array) <= 1:
        return array
    p=array.pop()
    for x in array:
        if x>p:
            more.append(x)
        else:
            less.append(x)
    return quicksort(less) +[p]+quicksort(more)    #列表合并

array1=[21,25,32,34,54,78,62,10]
print(quicksort(array1))

七、format()函数
数字格式化
下表展示了 str.format() 格式化数字的多种方法:
数字 格式 输出 描述
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:+.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
13 {:10d} 13 右对齐 (默认, 宽度为10)
13 {:<10d} 13 左对齐 (宽度为10)
13 {:^10d} 13 中间对齐 (宽度为10)

‘{:b}’.format(11)
‘{:d}’.format(11)
‘{?}’.format(11)
‘{:x}’.format(11)
‘{:#x}’.format(11)
‘{:#X}’.format(11)
^, <, > 分别是居中、左对齐、右对齐,后面带宽度,
: 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+号 表示在正数前显示 +,负数前显示 -;
(空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。

八、验证哥德巴赫猜想
大于2任意一个偶数可拆分成两个素数之和

from math import*
def is_prime (num):
    flag=1
    if num==1 or num==2:
        flag=1
    else:
        end=int(sqrt(num))
        for j in range(2,end+1):
            if num%j==0:
                flag=0
    return flag

def is_gdbh(num):
    flag1=0
    if num%2==0 and num>2:
        for j in range(2,int(sqrt(num)+1)):
            b11=is_prime(j)
            b12=is_prime(num-j)
            if b11==1 and b12==1:
                print("{0}={1}+{2}".format(num,j,num-j))
                flag1=1
                break
    if flag1==0:
        print("不符合哥德巴赫猜想!")

def text():
    print("输入大于2的偶数:")
    x=int(input())
    is_gdbh(x)

if __name__=="__main__":
    text()


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值