参考链接: C 程序检查Armstrong号码
说明
以下是我学习python基础语法所完成的操作样例 代码位置:https://github.com/duganlx/fopnp
两个数相加
def add(a, b):
return a b
m, n = input('请输入两个数,用空格隔开:').split(' ')
print('{0} {1} = {2}'.format(float(m), float(n), add(float(m), float(n))))
运行效果:
请输入两个数,用空格隔开:1 2
1.0 2.0 = 3.0
三数比大小
def sort(a, b):
return (a, b) if (a > b) else (b, a)
n1, n2, n3 = input('请输入三个数,以空格隔开:').split(' ')
n1 = int(n1)
n2 = int(n2)
n3 = int(n3)
(n1, n2) = sort(n1, n2)
(n1, n3) = sort(n1, n3)
(n2, n3) = sort(n2, n3)
print("{}>{}>{}".format(n1, n2, n3))
运行效果:
请输入三个数,以空格隔开:2 3 5
5>3>2
算平方根
def sqrt(num):
return num ** 0.5
num = float(input('输入一个数:'))
print('%0.3f 的平方根为 %0.3f' % (num, sqrt(num)))
运行效果:
输入一个数:9
9.000 的平方根为 3.000
计算三角形面积
def getTriangleArea(a, b, c):
return (a b c) / 2
a = float(input('请输入第一条边:'))
b = float(input('请输入第二条边:'))
c = float(input('请输入第三条边:'))
print('面积为:', getTriangleArea(a, b, c))
运行效果:
请输入第一条边:3
请输入第二条边:4
请输入第三条边:5
面积为: 6.0
解二次方程式
import cmath
def getRes(a, b, c):
d = (b ** 2) - (4 * a * c)
sol1 = (-b - cmath.sqrt(d)) / (2 * a)
sol2 = (-b cmath.sqrt(d)) / (2 * a)
return sol1, sol2
a = float(input('输入二次项系数:'))
b = float(input('输入一次项系数:'))
c = float(input('输入常数项系数:'))
print('该方程结果为:', getRes(a, b, c))
运行效果:
输入二次项系数:1
输入一次项系数:2
输入常数项系数:1
该方程结果为: ((-1 0j), (-1 0j))
交换两个变量
def swop(a, b):
return b, a
x = input("输入x的值:")
y = input("输入y的值:")
x, y = swop(x, y)
print('The value of x after swapping: {}'.format(x))
print('The value of y after swapping: {}'.format(y))
运行效果:
输入x的值:5
输入y的值:10
The value of x after swapping: 10
The value of y after swapping: 5
产生随机数
import random
i = 1
for i in range(0, 10):
print(random.randint(0, 9), end=' ')
运行效果:
1 3 1 5 9 7 9 7 2 5
将公里数转换为英里数
def km2mi(num):
conv_fac = 0.621371
return num * conv_fac
kilometers = float(input('请输入一个公里数:'))
print('%0.3f kilometers is equal to %0.3f miles' % (kilometers, km2mi(kilometers)))
运行效果:
请输入一个公里数:10
10.000 kilometers is equal to 6.214 miles
将摄氏温度转换为华氏温度
def tdc2ftt(celsius):
return (celsius * 1.8) 32
celsius = float(input('请输入一个摄氏度值:'))
print('%0.1f degree Celsius is equal to %0.1f degree Fahrenheit' % (celsius, tdc2ftt(celsius)))
运行效果:
请输入一个摄氏度值:10
10.0 degree Celsius is equal to 50.0 degree Fahrenheit
检查数字是正数,负数还是零
n = float(input('请输入一个数:'))
if n > 0:
print('这是一个正数')
elif n < 0:
print('这是一个负数')
else:
print('零')
运行效果:
请输入一个数:0
零
检查数字是奇数还是偶数
number = int(input('输入一个整数'))
if number % 2 == 0:
print('偶数')
else:
print('奇数')
运行效果:
输入一个整数5
奇数
检查是否闰年
def isLeapYear(year):
if year % 100 == 0:
return True if (year % 400 == 0) else False
else:
return True if (year % 4 == 0) else False
year = int(input('请输入一个年份:'))
if isLeapYear(year):
print('闰年')
else:
print('不是闰年')
运行效果:
请输入一个年份:2019
不是闰年
找到三个数字中的最大数
def max(a, b):
return a if (a > b) else b
num1 = float(input('输入第一个数:'))
num2 = float(input('输入第二个数:'))
num3 = float(input('输入第三个数:'))
res = max(num1, max(num2, num3))
print('最大的数是:', res)
运行效果:
输入第一个数:5
输入第二个数:23
输入第三个数:10
最大的数是: 23.0
检查是否质数
def isPrimeNum(num):
for i in range(2, num - 1):
if num % i == 0:
return False
return True
num = int(input('请输入一个整数:'))
if isPrimeNum(num):
print('质数')
else:
print('合数')
运行效果:
请输入一个整数:29
质数
以间隔打印出所有质数
def isPrimeNum(num):
if num == 1 or num == 2:
return True
for i in range(2, num - 1):
if num % i == 0:
return False
return True
maxNum = int(input('请输入一个最大数:'))
for n in range(1, maxNum):
if isPrimeNum(n):
print(n, end=' ')
运行效果:
请输入一个最大数:100
1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
找数字的因子
def getFactor(num):
arr = []
for i in range(1, num):
if num % i == 0:
arr.append(i)
return arr
num = int(input('请输入一个数:'))
print('因子为', getFactor(num))
运行效果:
请输入一个数:20
因子为 [1, 2, 4, 5, 10]
显示乘法表
def multiplicationtable():
for i in range(1, 10):
for j in range(1, i 1):
print("%d * %d = %d " % (j, i, j * i), end=' ')
print(' ')
multiplicationtable()
运行效果:
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
打印 Fibonacci 数列
def getFibonacci(num):
if num == 1:
return [1]
arr = [1, 1]
for i in range(2, num):
arr.append(arr[i - 1] arr[i - 2])
return arr
num = int(input('请输入打印到Fibonacci第几项:'))
print('结果为', getFibonacci(num))
运行效果:
请输入打印到Fibonacci第几项:10
结果为 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
检查 Armstrong 数
import math
def isArmstrong(num):
sum = int(0)
n = int(num)
while n != 0:
temp = int(n % 10)
n = int(n / 10)
sum = math.pow(temp, 3)
if sum == num:
return True
else:
return False
num = int(input('请输入一个三位数整数:'))
if isArmstrong(num):
print(num, '是水仙花数')
else:
print(num, '不是水仙花数')
运行效果:
请输入一个三位数整数:123
123 不是水仙花数
在间隔中查找 Armstrong 数
import math
def isArmstrong(num):
sum = int(0)
n = int(num)
while n != 0:
temp = int(n % 10)
n = int(n / 10)
sum = math.pow(temp, 3)
if sum == num:
return True
else:
return False
num = int(input('请输入范围最大值:'))
for i in range(100, num):
if isArmstrong(i):
print(i, end=' ')
运行效果:
请输入范围最大值:1000
153 370 371 407
算自然数之和
def sum(num1, num2):
return num1 num2
n1 = float(input('请输入一个自然数:'))
n2 = float(input('请输入另一个自然数:'))
print('求和结果为:', sum(n1, n2))
运行效果:
请输入一个自然数:10
请输入另一个自然数:30
求和结果为: 40.0
用函数显示2的次方
import math
def showPower(n):
return math.pow(2, n)
num = int(input('请输入想查看2的几次方:'))
print('结果为', showPower(num))
运行效果:
请输入想查看2的几次方:6
结果为 64.0
计算可被另一个数字整除的数字
def getFactor(num):
arr = []
for i in range(1, num):
if num % i == 0:
arr.append(i)
return arr
num = int(input('请输入一个数:'))
print('它可以被', getFactor(num), '整除')
运行效果:
请输入一个数:30
它可以被 [1, 2, 3, 5, 6, 10, 15] 整除
十进制转换为二进制,八进制和十六进制
num = int(input('请输入一个数字:'))
print('二进制结果为:', bin(num))
print('八进制结果为:', oct(num))
print('十六进制结果为:', hex(num))
运行效果:
请输入一个数字:10
二进制结果为: 0b1010
八进制结果为: 0o12
十六进制结果为: 0xa
找字符的 ASCII 值
def findAscii(n):
return ord(n)
print('该字符的ASCII值为:', findAscii(input('请输入一个字符:')))
运行效果:
请输入一个字符:a
该字符的ASCII值为: 97
计算 HCF 或 GCD(最大公约数)
def gcd(a, b):
if a % b == 0:
return b
else:
return gcd(b, a % b)
n, m = input('请输入两个数').split(' ')
print(gcd(int(n), int(m)))
运行效果:
请输入两个数10 30
10
计算 LCM(最小公倍数)
def gcd(a, b):
if a % b == 0:
return b
else:
return gcd(b, a % b)
def lcm(a, b):
return a * b / gcd(a, b)
n, m = input('请输入两个数').split(' ')
print(lcm(int(n), int(m)))
运行效果:
请输入两个数10 30
30.0
找数字的因子
def getFactor(num):
arr = []
for i in range(1, num):
if num % i == 0:
arr.append(i)
return arr
num = int(input('请输入一个数:'))
print('因子为', getFactor(num))
运行效果:
请输入一个数:40
因子为 [1, 2, 4, 5, 8, 10, 20]
制作简单计算器
import re
def add(a, b):
return a b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
def cal(flag, a, b):
if re.match('add', flag):
return add(a, b)
elif re.match('sub', flag):
return sub(a, b)
elif re.match('mul', flag):
return mul(a, b)
elif re.match('div', flag):
return div(a, b)
else:
return 'err'
operation = input('请输入操作码(add, sub, mul, div):')
n, m = input('请输入两个数').split(' ')
print('计算结果为:', cal(operation, int(n), int(m)))
运行效果:
请输入操作码(add, sub, mul, div):sub
请输入两个数10 30
计算结果为: -20
发牌程序
import random
import operator
def getPokers():
pokers = []
poker = []
for i in ['♥', '♠', '♦', '♣']:
for j in ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']:
poker.append(i)
poker.append(j)
pokers.append(poker)
poker = []
return pokers
pokers = getPokers()
random.shuffle(pokers) # 将序列的所有元素随机排序
li = {}
for player in ['player1', 'player2', 'player3', 'player4']:
b = random.sample(pokers, 13)
for s in b:
pokers.remove(s)
li.setdefault(player, b)
print('player1:', sorted(li['player1'], key=operator.itemgetter(0, 1))) # operator.itemgetter(0, 1)根据花色和数字来排序
print('player2:', sorted(li['player2'], key=operator.itemgetter(0, 1)))
print('player3:', sorted(li['player3'], key=operator.itemgetter(0, 1)))
print('player4:', sorted(li['player4'], key=operator.itemgetter(0, 1)))
运行效果:
player1: [['♠', '10'], ['♠', '3'], ['♠', '5'], ['♠', 'J'], ['♣', '2'], ['♣', '4'], ['♣', '7'], ['♣', '8'], ['♣', 'A'], ['♣', 'Q'], ['♥', '2'], ['♥', '4'], ['♦', '3']]
player2: [['♠', '2'], ['♠', '7'], ['♣', '5'], ['♣', '9'], ['♣', 'J'], ['♥', '3'], ['♥', '5'], ['♥', '6'], ['♥', 'J'], ['♥', 'K'], ['♦', '10'], ['♦', '8'], ['♦', 'K']]
player3: [['♠', '4'], ['♠', '6'], ['♠', '8'], ['♠', 'Q'], ['♣', '10'], ['♣', 'K'], ['♥', '7'], ['♥', '8'], ['♥', 'A'], ['♥', 'Q'], ['♦', '5'], ['♦', '9'], ['♦', 'J']]
player4: [['♠', '9'], ['♠', 'A'], ['♠', 'K'], ['♣', '3'], ['♣', '6'], ['♥', '10'], ['♥', '9'], ['♦', '2'], ['♦', '4'], ['♦', '6'], ['♦', '7'], ['♦', 'A'], ['♦', 'Q']]
显示日历
import calendar
# 设置第一天是星期天
calendar.setfirstweekday(firstweekday=6)
n = int(input('请输入所查看日历的级别 1(输出全年),2(输出某月):'))
if n == 1:
yy = int(input("输入年份: "))
cal = calendar.TextCalendar()
cal.pryear(yy)
if n == 2:
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy, mm))
运行效果:
请输入所查看日历的级别 1(输出全年),2(输出某月):2
输入年份: 2019
输入月份: 5
May 2019
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
用递归显示 Fibonacci 数列
def Fibonacci(n):
if n <= 2:
return 1
else:
return Fibonacci(n - 1) Fibonacci(n - 2)
n = int(input("输入一个正整数n,n为输出项数:"))
for i in range(1, n 1):
print(Fibonacci(i), end=' ')
运行效果:
输入一个正整数n,n为输出项数:5
1 1 2 3 5
用递归找整数之和
def sum(n):
if n == 1:
return 1
else:
return sum(n - 1) n
i = int(input('输入一个整数:'))
print('其整数之和为:', (sum(i)))
运行效果:
输入一个整数:10
其整数之和为: 55
用递归算阶层
def Factorial(n):
if n == 0:
return 1
else:
return n * Factorial(n - 1)
i = int(input('输入一个整数:'))
print(i, '的阶乘为', Factorial(i))
运行效果:
输入一个整数:10
10 的阶乘为 3628800
用递归将十进制转换为二进制
def dec2bin(n):
result = "0"
if n == 0:
return result
else:
result = dec2bin(n // 2)
return result str(n % 2)
n = int(input("请输入一个十进制的数字:"))
print(dec2bin(n))
运行效果:
请输入一个十进制的数字:10
01010
说明: 语句result = dec2bin(n // 2)中的//代表整数除法,若时/则表示浮点数除法
添加两个矩阵
import numpy
A = numpy.mat('1,2;3,4')
B = numpy.array([[3, 2], [3, 4], [9, 6]])
print(A)
print('')
print(B)
运行效果:
[[1 2]
[3 4]]
[[3 2]
[3 4]
[9 6]]
转置矩阵
import numpy
A = numpy.array([[3, 2], [3, 4], [9, 6]])
print(A)
print('')
print(A.T)
运行效果:
[[3 2]
[3 4]
[9 6]]
[[3 3 9]
[2 4 6]]
两个矩阵相乘
import numpy
A = numpy.array([[3, 2], [3, 4], [9, 6]])
B = numpy.array([[3, 1, 2], [3, 6, 4]])
C = numpy.dot(A, B)
print("A:n", A)
print("B:n", B)
print("A×B:n", C)
运行效果:
A:
[[3 2]
[3 4]
[9 6]]
B:
[[3 1 2]
[3 6 4]]
A×B:
[[15 15 14]
[21 27 22]
[45 45 42]]
检查字符串是否为回文
s = input("输入一个字符串:")
d = ''.join(reversed(s))
print(d)
if s == d:
print("字符串是回文")
else:
print("字符串不是回文")
运行效果:
输入一个字符串:abcba
abcba
字符串是回文
说明: str.join(sequence):通过指定字符str来连接sequence中元素生成新的字符串 示例:
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
# 输出
a-b-c
从字符串中删除标点符号
import string
i = input("输入一条带标点的字符串(英文标点):")
print("".join(i.split('.')))
运行效果:
adfjkdffgdkfjk
按字母顺序排序的单词
list = ["delphi", "java", "python", "python", "c ", "c", "golang"]
list.sort(reverse=False) # 按降序排列
print(list)
运行效果:
['c', 'c ', 'delphi', 'golang', 'java', 'python', 'python']
不同集合的操作
set1 = set([1, 2, 3, 4, 5])
set2 = set([0, 2, 3, 6, 7])
print('交集', set1 & set2)
print('并集', set1 | set2)
print('差集', set1 - set2)
运行效果:
交集 {2, 3}
并集 {0, 1, 2, 3, 4, 5, 6, 7}
差集 {1, 4, 5}
来计算每个元音的数量
str = input('请输入一个字符串')
strList = list(str)
a = 0
e = 0
i = 0
o = 0
u = 0
for n in range(0, len(strList)):
if strList[n] == 'a':
a = a 1
elif strList[n] == 'e':
e = e 1
elif strList[n] == 'i':
i = i 1
elif strList[n] == 'o':
o = o 1
elif strList[n] == 'u':
u = u 1
print('a:', a, 'e:', e, 'i:', i, 'o:', o, 'u:', u)
运行效果:
a: 1 e: 1 i: 0 o: 0 u: 0
用于邮件的合并
from mailmerge import MailMerge
doc = MailMerge("./Ex44_file/test.docx")
doc.merge(
username="ddu",
clazz="17计算机科学与技术"
)
doc.write("./Ex44_file/res.docx")
运行效果:
# test.docx内容
我叫 «username»
我的班级是 «clazz»
# res.docx内容
我叫 ddu
我的班级是 17计算机科学与技术
找图像大小分辨率
from PIL import Image
fileName = "./Ex45_file/tuxiang.jpg"
img = Image.open(fileName)
imgSize = img.size
print(imgSize)
运行效果:
(471, 472)
文件的杂凑搜寻(哈希表)
# 实现hashtable,指定在key位置存入data
class HashTable:
def __init__(self):
self.size = 11
self.slots = [None] * self.size
self.data = [None] * self.size
def put(self, key, value):
hashvalue = self.hashfunction(key, len(self.slots))
if self.slots[hashvalue] is None: # 如果slot内是空值,则存进去
self.slots[hashvalue] = key
self.data[hashvalue] = value
else: # slot内已有key
if self.slots[hashvalue] == key: # 如果已有值等于key,更新data
self.data[hashvalue] = value
else: # 如果slot不等于key,找下一个为None的地方
nextslot = self.rehash(hashvalue, len(self.slots))
while self.slots[nextslot] is not None and self.slots[nextslot] != key:
nextslot = self.rehash(nextslot, len(self.slots))
if self.slots[nextslot] is None:
self.slots[nextslot] = key
self.data[nextslot] = value
else:
self.data[nextslot] = value
def rehash(self, oldhash, size):
return (oldhash 1) % size
# 散列函数
def hashfunction(self, key, size):
return key % size
def get(self, key):
startslot = self.hashfunction(key, len(self.slots))
data = None
found = False
stop = False
pos = startslot
while pos is not None and not found and not stop:
if self.slots[pos] == key:
found = True
data = self.data[pos]
else:
pos = self.rehash(pos, len(self.slots))
# 回到了原点,表示找遍了没有找到
if pos == startslot:
stop = True
return data
# 重载载 __getitem__ 和 __setitem__ 方法以允许使用 [] 访问
def __getitem__(self, key):
return self.get(key)
def __setitem__(self, key, value):
return self.put(key, value)
if __name__ == '__main__':
H = HashTable()
H[54] = "cat"
H[26] = "dog"
H[93] = "lion"
H[17] = "tiger"
H[77] = "bird"
H[31] = "cow"
H[44] = "goat"
H[55] = "pig"
H[20] = "chicken"
print(H.slots) # [77, 44, 55, 20, 26, 93, 17, None, None, 31, 54]
print(H.data) # ['bird', 'goat', 'pig', 'chicken', 'dog', 'lion', 'tiger', None, None, 'cow', 'cat']
print(H[20]) # 'chicken'
H[20] = 'duck'
print(H[20]) # duck
print(H[99]) # None
运行效果:
[77, 44, 55, 20, 26, 93, 17, None, None, 31, 54]
['bird', 'goat', 'pig', 'chicken', 'dog', 'lion', 'tiger', None, None, 'cow', 'cat']
chicken
duck
None