文章目录

  • 交换变量
  • 传统方法
  • 列表的方法
  • 完整实例代码
  • 条件语句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))