一、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()