文章目录
- 交换变量
- 传统方法
- 列表的方法
- 完整实例代码
- 条件语句if
- 输出任意范围内素数
- 阶乘
- 九九乘法表
- 阿姆斯特朗数
- 十进制与二进制、八进制、十六进制的转换
- ASCII码与字符的转换
- 求最大公约数
- 求最小公倍数
- 生成日历
- 递归斐波那契数列
- 文件IO
- 字符串内容判断和转换
- 计算每个月天数
- 获取昨天日期
- list常用操作
- 约瑟夫环
- 实现秒表功能
- 求数组元素的和
- 数组翻转指定个数的元素到数组的尾部
- 交换列表中的首尾元素
交换变量
传统方法
引入临时变量t作为交换的容器:
def swap(a, b):
t = a
a = b
b = t
return a, b
列表的方法
不需要临时变量,直接交换。
def swap1(a, b):
a, b = b, a
return a, b
完整实例代码
#!/usr/bin/python3
# coding=utf-8
def swap(a,b):
t = a
a = b
b = t
return a,b
def swap1(a,b):
a, b = b, a
return a, b
def inputMyNumber():
a = float(input('a= '))
b = float(input('b= '))
return a, b
a, b = inputMyNumber()
print('a= %0.3f, b= %0.3f'%swap(a, b))
print('a= %0.3f, b= %0.3f'%swap1(a, b))
输出结果
a= 20
b= 95
a= 95.000, b= 20.000
a= 95.000, b= 20.000
条件语句if
if…elif…else
#!/usr/bin/python3
# coding=utf-8
num = float(input('num: '))
if num>0:
print('Positve')
elif num ==0:
print("zero")
else:
print('negative')
优化:增加字符输入的判断及异常处理:
while True:#
try:
mynum = float(input('mynum='))
if mynum==0:
print("zero")
elif num>0:
print('positive')
else:
print('negative')
break
except ValueError:
print('Error')
输出任意范围内素数
#!/usr/bin/python3
# coding=utf-8
lower = int(input('lower: '))
upper = int(input('upper: '))
for num in range(lower, upper+1):
if num>1:
for i in range(2, num):
if (num%i)==0:
break
else:
print(num)
阶乘
#!/usr/bin/python3
# coding=utf-8
num = int(input('num: '))
factorial = 1
if num<0:
print('Error')
elif num==0:
print('1')
else:
for i in range(1, num+1):
factorial *=i
print('%d!=%d'%(num, factorial))
九九乘法表
#!/usr/bin/python3
# coding=utf-8
for i in range(1, 10):
for j in range(1,i+1):
print('{}×{}={}\t'.format(j,i,i*j),end='')
print()
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
阿姆斯特朗数
如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。
例如1^3 + 5^3 + 3^3 = 153
当n=3时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。
水仙花数共有4个,分别为:153、370、371、407。
#!/usr/bin/python3
# coding=utf-8
num = int(input('num= '))
sum = 0
n = len(str(num))
temp = num
while temp>0:
digit = temp % 10
sum += digit **n
temp //=10
if num == sum :
print(num,'is armstrong')
else:
print(num,'is not armstrong')
十进制与二进制、八进制、十六进制的转换
#!/usr/bin/python3
# coding=utf-8
num = int(input('num= '))
print('dec:',num)
print('bin:',bin(num))
print('oct:',oct(num))
print('hex:',hex(num))
ASCII码与字符的转换
#!/usr/bin/python3
# coding=utf-8
c = input('num= ')
a = int(input('ascii='))
print(c,'的ASCII码为:',ord(c))
print(a,'对应的字符为:',chr(a))
求最大公约数
#!/usr/bin/python3
# coding=utf-8
def hcf(x,y):
if x>y:
smaller = y
else:
smaller = x
for i in range(1, smaller+1):
if (x % i==0) and (y % i == 0):
hcf = i
return hcf
num1 = int(input('x:'))
num2 = int(input('y:'))
print('hcf:' , hcf(num1, num2))
求最小公倍数
#!/usr/bin/python3
# coding=utf-8i
def lcm(x,y):
if x>y:
greater = x
else:
greater = y
while(True):
if (greater % x ==0) and (greater % y == 0):
lcm = greater
break
greater+=1
return lcm
num1 = int(input('x:'))
num2 = int(input('y:'))
print('lcm:' , lcm(num1, num2))
生成日历
利用calendar模块
#!/usr/bin/python3
# coding=utf-8
import calendar
yy = int(input('year:'))
mm = int(input('month:'))
print(calendar.month(yy,mm))
递归斐波那契数列
#!/usr/bin/python3
# coding=utf-8
def recur_fibo(n):
if n<=1:
return n
else:
return (recur_fibo(n-1)+recur_fibo(n-2))
nterms = int(input('n='))
if nterms<=0:
print('error')
else:
print('fibo:')
for i in range(nterms):
print(recur_fibo(i))
文件IO
#!/usr/bin/python3
# coding=utf-8
with open('./text.txt','wt') as out_file:
out_file.write("can you hear me?\nmaybe you can")
with open('./text.txt','rt') as in_file:
text = in_file.read()
print(text)
字符串内容判断和转换
#!/usr/bin/python3
# coding=utf-8
str = "runoob.com"
# 判断字符串内容
print(str.isalnum())
print(str.isalpha())
print(str.isdigit())
print(str.islower())
print(str.isupper())
print(str.istitle())
print(str.isspace())
# 字符串转换
print(str.upper())
print(str.lower())
print(str.capitalize())
print(str.title())
计算每个月天数
#!/usr/bin/python3
# coding=utf-8
import calendar
print(calendar.monthrange(2016,9))
(3, 30)
输出的是一个元组,第一个元素是所查月份的第一天对应的是星期几(0-6),第二个元素是这个月的天数。以上实例输出的意思为 2016 年 9 月份的第一天是星期四,该月总共有 30 天。
获取昨天日期
#!/usr/bin/python3
# coding=utf-8
import datetime
def getYesterday():
yesterday = datetime.date.today()-datetime.timedelta(1)
return yesterday
print(getYesterday())
list常用操作
#列表索引、增加或删除元素等
#!/usr/bin/python3
# coding=utf-8
li = ['a', 'b', 'b', 'b', 'c', 'date']
print(li)
# 列表索引
print(li[0])
print(li[0:4])
print(li[1:-1])
# 增加元素
li.append('newElement')
print(li)
li.insert(1,'a newElement')
print(li)
li.extend(['me','you','her'])
print(li)
# 搜索
print(li.index('you'))# 返回元素所在位置
# 删除元素
li.remove('b')#只删除首次出现的一个值
print(li)
print(li.pop)#删除list最后一个元素并返回被删除的元素值
约瑟夫环
#!/usr/bin/python3
# coding=utf-8
# 30人围成一圈报数,从1开始,数到9的人out,out15个人。下面输出out人的编号
people={}
for x in range(1,31):
people[x]=1#标记人的状态
check=0
i=1#从1开始报数
j=0
while i<=31:
if i == 31:#报到31后从新开始
i=1
elif j == 15:
break
else:
if people[i] == 0:
i+=1
continue
else:
check+=1
if check == 9:
people[i]=0
check = 0
print("{} is out".format(i))
j+=1
else:
i+=1
continue
实现秒表功能
#!/usr/bin/python3
# coding=utf-8
import time
print("press enter to start, press ctrl+c to stop")
while True:
try:
input()#
startTime = time.time()
print('start')
while True:
print('count:', round(time.time()-startTime, 0), 's',end='\r')#count
time.sleep(1)
except KeyboardInterrupt:#end
print('end')
endTime = time.time()
print("The total is %f seconds"%round(endTime-startTime))
break
求数组元素的和
#!/usr/bin/python3
# coding=utf-8
def _sum(arr, n):#调用Python内置的sum函数
return(sum(arr))
arr = [12, 3, 4, 15]
n = len(arr)
print(_sum(arr, n))
数组翻转指定个数的元素到数组的尾部
#!/usr/bin/python3
# coding=utf-8
# 数组翻转指定个数的元素到数组的尾部
def leftRotate(arr, d, n):
for i in range(d):
leftRotateByOne(arr, n)
def leftRotateByOne(arr, n):
temp = arr[0]
for i in range(n-1):
arr[i] = arr[i+1]
arr[n-1]=temp
def printArray(arr,size):
for i in range(size):
print("%d"%arr[i],end=' ')
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
leftRotate(arr, 2, len(arr))
printArray(arr,len(arr))
交换列表中的首尾元素
有两种方法,一是中间变量,二是利用列表的拆分与重组。
#!/usr/bin/python3
# coding=utf-8
# 将列表首尾两元素对调
def swapList(list):#temp
size = len(list)
temp = list[0]
list[0] = list[size-1]
list[size-1] = temp
return list
list = [1, 2, 3, 4, 5, 6]
print(swapList(list))
def newSwapList(newlist):#no temp
newlist[0], newlist[-1] = newlist[-1], newlist[0]
return newlist
newlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(newSwapList(newlist))