pyhon语法学习笔记

2021-02-05 10:03:58 浏览数 (1)

参考链接: 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

0 人点赞