【PYTHON程序设计】实训代码

教材《Python语言程序设计基础》

第二章作业(9.15实训)

2.2

TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
    C = (eval(TempStr[0:-1])-32)/1.8
    print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','C']:
    F=1.8*eval(TempStr[0:-1])+32
    print("转换后的温度是{:.2f}F".format(F))
else:
    print("输入格式错误")

在这里插入图片描述

TempStr = input("请输入带有符号的金额:")
if TempStr[-1] in ['$']:
    C = (eval(TempStr[0:-1]))*6
    print("该金额对应的人民币额度是{:.2f}¥".format(C))
elif TempStr[-1] in ['¥']:
    F=(eval(TempStr[0:-1]))/6
    print("该金额对应的美元额度是{:.2f}$".format(F))
else:
    print("输入格式错误")

在这里插入图片描述

2.3

import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
    turtle.circle(40,80)
    turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)

在这里插入图片描述

import turtle
a=['green','red','yellow','pink']
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.seth(-40)
for i in range(4):
   turtle.pencolor(a[i])
   turtle.circle(40, 80)
   turtle.circle(-40, 80)
turtle.pencolor("purple")
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.exitonclick()

在这里插入图片描述

2.4

import turtle
for i in range(3):
   turtle.seth(i*120)
   turtle.fd(100)

turtle.exitonclick()

在这里插入图片描述

2.5

import turtle

turtle.setup(800, 600)
#turtle.pensize(20)
# 设置画笔大小
#turtle.pencolor('pink')
# 设置颜色
for i in range(7):
    # 绘制外层大三角形
    if i < 3:
        turtle.fd(200)
        turtle.left(120)
        # 每次前进之后转向
    # 绘制内层小三角形
    elif i < 5:
        turtle.fd(100)
        turtle.left(120)
    else:
        turtle.left(120)
        turtle.fd(100)
        turtle.left(120)
turtle.done()
turtle.exitonclick()

在这里插入图片描述

2.6


import turtle

turtle.pensize(2)

turtle.seth(0)
for i in range(1,5):
    turtle.penup()
    turtle.forward(20)
    turtle.pendown()
    turtle.forward(100)
    turtle.penup()
    turtle.forward(20)
    turtle.pendown()

    turtle.left(90)

turtle.done()

在这里插入图片描述

2.7

import turtle

turtle.pensize(2)

turtle.seth(30)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)

turtle.penup()
turtle.seth(0)
turtle.forward(115.6)
turtle.pendown()

turtle.seth(150)
turtle.forward(100)
turtle.left(120)
turtle.forward(100)
turtle.left(120)
turtle.forward(100)
turtle.exitonclick()

在这里插入图片描述

2.8

import turtle

turtle.pensize(2)
for x in range(100):
    turtle.forward(2*x)
    turtle.left(90)
turtle.done()
turtle.exitonclick()

在这里插入图片描述

第三章作业

3.1重量计算

月球上物体的体重是在地球上的16.5%,假如你在地球上每年增长0.5kg,编写程序输出未来10年你在地球和月球上的体重状况。

m=65
n=0
for i in range(1,11):
    m+=0.5
    n = 0.165*m

    print("未来第{:d}年我在地球上的体重是{:.2f}kg".format(i,m))
    print("未来第{:d}年我在月球上的体重是{:.2f}kg".format(i,n))

未来第1年我在地球上的体重是65.50kg
未来第1年我在月球上的体重是10.81kg
未来第2年我在地球上的体重是66.00kg
未来第2年我在月球上的体重是10.89kg
未来第3年我在地球上的体重是66.50kg
未来第3年我在月球上的体重是10.97kg
未来第4年我在地球上的体重是67.00kg
未来第4年我在月球上的体重是11.05kg
未来第5年我在地球上的体重是67.50kg
未来第5年我在月球上的体重是11.14kg
未来第6年我在地球上的体重是68.00kg
未来第6年我在月球上的体重是11.22kg
未来第7年我在地球上的体重是68.50kg
未来第7年我在月球上的体重是11.30kg
未来第8年我在地球上的体重是69.00kg
未来第8年我在月球上的体重是11.38kg
未来第9年我在地球上的体重是69.50kg
未来第9年我在月球上的体重是11.47kg
未来第10年我在地球上的体重是70.00kg
未来第10年我在月球上的体重是11.55kg

在这里插入图片描述

3.2天天向上续(一)

假设能力增长符合如下带有平台期的模型:以七天为一个周期,连续学习3天能力值不变,从第四天至第七天每天能力增长为前一天的1%。
如果7天有一天间断学习,则周期从头计算。
请编写程序回答,如果初始能力值为1,连续学习365天后能力值为多少?

m=1
n=0
for i in range(1,366):

    n+=1
    if n>3:
        m=1.01*m
print("连续学习{:d}天后能力值是{:.2f}".format(i,m))

连续学习365天后能力值是36.67

在这里插入图片描述

3.3天天向上续(二)

如果初始能力值为1,固定每10天休息1天,365天后能力值是多少?15天休息一天呢?

m=1
n=0
for i in range(1,366):

    n+=1
    if n>3:
        m=1.01*m
    if n==11:
        n=0
print("连续学习{:d}天后能力值是{:.2f}".format(i,m))

连续学习365天后能力值是13.83
在这里插入图片描述

3.4 回文数判断

设n是任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。
从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数。

m=(input("请输入5位整数:"))
n=eval(m)
if(10000<n and n<100000):
    if m == m[::-1]:
        print("是回文数")
    else:
        print("不是回文数")
  # print("连续学习{:d}天后能力值是{:.2f}".format(i,m))
else:
    print("输入格式错误")

请输入5位整数:12321
是回文数

在这里插入图片描述

3.5田字格的输出:

a = " + "
b = "   "
c = " — "
d = " | "

for h in range(1,12): #田字格有11for l in range(1,12): #田字格有11if h in [1,6,11] and l in [1,6,11]:
            print(a,end="")

        if  h in [1,6,11] and l not in [1,6,11]:
            print(c,end="")
        if h not in [1,6,11] and l in [1,6,11]:
            print(d,end="")
        if h not in [1,6,11] and l not in [1,6,11]:
            print(b,end="")
        if l==11 :
            print()
 +  —  —  —  —  +  —  —  —  —  + 
 |              |              | 
 |              |              | 
 |              |              | 
 |              |              | 
 +  —  —  —  —  +  —  —  —  —  + 
 |              |              | 
 |              |              | 
 |              |              | 
 |              |              | 
 +  —  —  —  —  +  —  —  —  —  + 

进程已结束,退出代码0

在这里插入图片描述

3.6文本进度条

import time
scale = 10
print("staring",end="")
for i in range(scale+1):
    a = '·'
   # b = ' . . ' * (scale - 1)
    c = (i / scale) * 100
    print(" {}".format(a),end="")
    time.sleep(0.1)
print("Done!")

在这里插入图片描述

3.7文本风格

while  True:
    for i in ["/","-","|","\\","|"]:
        print("%s\r" %i,end='')

在这里插入图片描述

在这里插入图片描述

3.8tqdm

from tqdm import tqdm
from time import sleep
for i in tqdm(range(1,100)):
    sleep(0.01)

在这里插入图片描述

第四章作业

4.1猜数游戏

在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”;小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“预测N次,你猜中了!”,其中N是用户输入数字的计数。

import random
r= random.randrange(0,9,1)
i=1
while(1):
    g=eval(input("输入猜的数"))
    if(g>r):
        print("阿巴阿巴,大了")
        i+=1
        continue
    elif(g<r):
        print("欸嘿,小了")
        i+=1
        continue
    else:
        print(" 预测{}次后,你猜中了".format(i))
        break

在这里插入图片描述

4.2统计不同字符个数

用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数。

s=input("输入一行字符:")
alpha,number,space,other=0,0,0,0
for i in s:
    if('a'<= i<='z' or 'A'<=i<='Z' ):
        alpha+=1
    elif('0'<=i<='9'):
        number+=1
    elif(i==' '):
        space+=1
    else:
        other+=1
print("字母有{}个,数字有{}个,空格有{}个,其他有{}个".format(alpha,number,space,other))

在这里插入图片描述

4.3最大公约数计算

从键盘接受两个整数,编写程序求出这两个整数的最大公约数和最小公倍数
(提示:求最大公约数可用辗转相除法,求最小公倍数则用两数的积除以最大公约数即可)


a=int(input("输入第一个数:"))
b=int(input("输入第二个数:"))

m=max(a,b)
n=min(a,b)
t=m%n
while t!=0:
    m,n=n,t
    t=m%n
s=int(a*b/n)
print("{}和{}的最大公约数为{}".format(a,b,n))
print("{}和{}的最小公倍数为{}".format(a,b,s))

在这里插入图片描述

4.4猜数游戏续(一)

改编4.1,让计算机能够随机产生一个预设数字,范围在0~100之间,其他游戏规则不变。

import random
r= random.randrange(0,100,)
i=1
while(1):
    g=eval(input("输入猜的数"))
    if(g>r):
        print("阿巴阿巴,大了")
        i+=1
        continue
    elif(g<r):
        print("欸嘿,小了")
        i+=1
        continue
    else:
        print(" 预测{}次后,你猜中了".format(i))
        break

在这里插入图片描述

4.5猜数游戏续(二)

对于4.4,当用户输入的不是整数(如字母、浮点数等)时,程序会终止执行并退出。改编该程序,当用户输入出错时给出“输入内容必须为整数!”的提示,并让用户重新输入。

import random
r= random.randrange(0,100,)
i=1
while(1):
    g=(input("输入猜的数"))
    if '0'<g and g<'9':
       g=eval(g)
       if(g>r):
         print("阿巴阿巴,大了")
         i+=1
         continue
       elif(g<r):
         print("欸嘿,小了")
         i+=1
         continue
       else:
         print(" 预测{}次后,你猜中了".format(i))
         break
    else:
        print("输入内容必须为整数!")

在这里插入图片描述

4.6羊车门问题

有三扇关闭的门,一扇门后面停着汽车、其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。
请问,参赛者更换选择后能否增加猜中汽车的机会?

请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的几率。

import random
n=0
m=0
for i in range(100000):
    a=random.randint(1,3)#规定1后面是车,23后面是羊,随机选择
    if a==1:
        n=n+1

print("不更改选中车的概率:{}".format(n/100000))
for j in range(100000):
    b=random.randint(1,3)
    if b==1:#换后选中车建立在第一次选中羊的基础上
        continue
    else:#23等价,翻开的定义为3,选中的定义为2
        c=random.randint(1,2)#问题变为在两扇门间选择,且已经选中羊,更换必中车
        m=m+1
print("更改选中车的概率:{}".format(m/(100000)))

在这里插入图片描述

4.7异常处理

请用异常处理改造实例(根据圆的半径计算圆的面积和周长),使其能够接收并处理用户的任何输入。

import math
try:
  r=eval(input("请输入半径:"))

  c=math.pi *r*2
  s=math.pi *(r**2)
  print("周长是{:.2f},面积为{:.2f}".format(c,s))

except NameError:
    print("请输入正整数")
except:
    print("其他错误")

在这里插入图片描述

第五章作业

5.1 更大田字格

仿造习题3.5输出一个更大的田字格,用函数简化其代码,田字格为4x4

a,b,c,d='+ ','-- ','|',' '
def line(m):
    for i in range(m*5+1):
        print("{}".format(a if i%5==0 else b),end='')
    print()
def littlesquare(m):
    line(m)
    for j in range((m+2)*4):
        print("{}{}".format(c,d*13),end='') if j%(m+2)!=m+1 else print("")
def tsquare(m,n):
    for i in range(n):
        littlesquare(m)
    line(m)
tsquare(4,4)

在这里插入图片描述

5.2 isOdd()函数

实现isOdd()函数,参数为整数,如果整数为奇数,返回True,否则返回False

def isOdd(a):
    if a%2 !=0:
        print("True")
        return True
    else:
        print("False")
        return False
isOdd(3)
isOdd(4)

在这里插入图片描述

5.3 isNum()函数

参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,返回True,否则返回False

def isOdd(a):
    if type(a) == int or type(a) == float or type(a) == complex:
        print("True")
        return True
    else:
        print("False")
        return False
isOdd('m')
isOdd(3)

在这里插入图片描述

5.4 multi()函数

参数个数不限,返回所有参数的乘积

def multi():
    try:
        str=input("输入要相乘的参数,用空格隔开:")
        c=1
        for item in str.split():

            c=c*int(item)
        print(c)
    except:
        print("error")

multi()


在这里插入图片描述

5.5 isPrime()函数

参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False。

import math
def isPrime(n):
    try:
            if n <= 1:
                print("请输入大于一正整数")
            for i in range(2, int(math.sqrt(n) + 1)):
               if n % i == 0:
                  print("非质数")
                  return False
            print("是质数")
            return True
    except:
        print("error")
isPrime(3)
isPrime(4)
isPrime(5)

在这里插入图片描述

5.6 datetime库

使用datetime库,对自己的生日输出不少于10种日期格式。

5.7 汉诺塔

def hanoi(n,A,B,C):                   #定义汉诺塔函数,参数n是圆盘数,A、B、C是3根柱
   if n==1:                           #判断圆盘数,如果等于1,递归条件
      print(A,'-->',C,' ',n)          # 直接将A柱上的圆盘移动到C柱上
   else:                              #否则,进行递归移动
      hanoi(n-1,A,C,B)               #递归将A柱最上方的n-1个盘子落在B柱
      print(A,'-->',C,' ',n) # 输出将A柱上的圆盘移动到C柱上,也就是将A柱的最小面盘子落在C柱
      hanoi(n-1,B,A,C)             #递归将B柱上的n-1个盘子,落在C柱

hanoi(6,'A','B','C')               #调用函数


D:\coder\randomnumbers\venv\Scripts\python.exe D:/coder/randomnumbers/chengxusheji.py
A --> B 1
A --> C 2
B --> C 1
A --> B 3
C --> A 1
C --> B 2
A --> B 1
A --> C 4
B --> C 1
B --> A 2
C --> A 1
B --> C 3
A --> B 1
A --> C 2
B --> C 1
A --> B 5
C --> A 1
C --> B 2
A --> B 1
C --> A 3
B --> C 1
B --> A 2
C --> A 1
C --> B 4
A --> B 1
A --> C 2
B --> C 1
A --> B 3
C --> A 1
C --> B 2
A --> B 1
A --> C 6
B --> C 1
B --> A 2
C --> A 1
B --> C 3
A --> B 1
A --> C 2
B --> C 1
B --> A 4
C --> A 1
C --> B 2
A --> B 1
C --> A 3
B --> C 1
B --> A 2
C --> A 1
B --> C 5
A --> B 1
A --> C 2
B --> C 1
A --> B 3
C --> A 1
C --> B 2
A --> B 1
A --> C 4
B --> C 1
B --> A 2
C --> A 1
B --> C 3
A --> B 1
A --> C 2
B --> C 1

八皇后问题

参考:

https://blog.csdn.net/Wangtuo1115/article/details/106862490?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166565012216800180668737%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166565012216800180668737&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-2-106862490-null-null.142v55control,201v3add_ask&utm_term=%E5%85%AB%E7%9A%87%E5%90%8E%E9%97%AE%E9%A2%98python&spm=1018.2226.3001.4187

def conflict(state, nextColumn):
    """
   判断是否冲突
   因为坐标是从0开始的,所以state的长度代表了下一行的行坐标
   :param state:(7,4,6,0,2) 标记每行皇后所在的位置 (0,7)一行八列 (2,4) (3,6) (4,0) (5,2)
   :param nextColumn:下一行的列坐标
   :return:
   """
    nextRow = rows = len(state)  # 5
    for row in range(rows):  # 0,1,2,3,4
        # 获取当前行的列
        column = state[row]
        """
      如何判断是否冲突:
          1. 如果列的差值为0,说明两皇后在同一列
          2. 如果列的差值等于行的差值,说明两皇后在对角线上
      """
        if abs(column - nextColumn) in [0, nextRow - row]:
            return True
    return False


# 采用生成器的方式来产生每一个皇后的位置,并用递归来实现下一个皇后的位置
def queens(num, state=()):
    """
   基于递归采用回溯算法,算出每一种结果

   :param num: 皇后的数量  8
   :param state: 列坐标。初始为空。参数为元组不为列表,因为参数只能为不可变数据类型
   :return:
   """
    # 每一行的列坐标都是从0:7的
    # 0,1,2,3,4,5,6,7
    for pos in range(num):
        # 默认state为空。长度为0,但是是不冲突的
        # 判断是否冲突,state为空时不冲突
        if not conflict(state, pos):  # 回溯法的体现
            # 如果state的长度为7,即到达了倒数第二行,也就是前7行皇后都已经找到了位置,最后一行又没有冲突,返回最后一行的列坐标
            if len(state) == num - 1:
                # 最后一行的(pos,)=最后一行的result,然后再递归回去求倒数第二行的result
                yield (pos,)
            else:
                for result in queens(num, state + (pos,)):
                    """
               递归实现求state:
                   1. 向下递归
                   第一次(行): pos=0,刚开始不会进入if len(state) == num - 1,进入执行else,会执行queens(num, state + (pos, )),
                   第二次(行): 进入else,再调用queens(num, state + (pos, )),递归执行queens(num, state + (pos,) + (pos,))
                   第三次(行): 进入else,再调用queens(num, state + (pos,) + (pos,),递归执行queens(num, state + (pos,) + (pos,) + (pos,))
                   ...
                   第七次(行): 执行和上面的一样,不过此时state的长度为7
                   第八次(行): 执行f len(state) == num - 1:求出最后一行的列坐标(pos,)

                   2.向上递归
                   求出第八行的列坐标,就可以求出第七行的(pos,),返回的是第七行和第八行的列坐标((pos,) + result)
                   根据下一行的结果依次求出上一行的结果;
                   ....
                   最后求出第一行的列坐标,返回整体结果
               """
                    yield (pos,) + result


def prettyprint(solution):
    """
   进行友好展示:为了至关表现棋盘,用X表示皇后的位置
   :param solution:
   :return:
   """

    def line(pos, length=len(solution)):
        return '.' * (pos) + '@' + '.' * (length - pos - 1)

    for pos in solution:
        print(line(pos))


if __name__ == '__main__':
    solutions = queens(8)
    for index, solution in enumerate(solutions):
        print('第%d种解决方案:' % (index + 1), solution)
        prettyprint(solution)
        print('*' * 50)

第六章作业

6.1 随机密码生成

编写程序,在26个字母大小写和9个数字组成的列表中随机生成10个8位密码。

import random
letter = ['a','b','c','d','e','f','g','h','i',
          'j','k','l','m','n','o','p','q','r',
          's','t','u','v','w','x','y','z',
          'A','B','C','D','E','F','G','H','I',
          'J','K','L','M','N','O','P','Q','R',
          'S','T','U','V','W','X','Y','Z',
          1,2,3,4,5,6,7,8,9]
i = 0
while i < 10:
    password = []
    p = 0
    while p < 8:
        s = random.randint(1,60)
        password.append(letter[s])
        p += 1
    i += 1
    print("生成的随机密码是:{}{}{}{}{}{}{}{}".format(password[0],password[1],password[2],
       password[3],password[4],password[5],password[6],password[7]))

在这里插入图片描述

6.2 重复元素判定

编写一个函数,接受列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变原来列表的值。同时编写调用这个函数和测试结果的程序。

str1=input('输入以英文逗号分隔列表元素')
list1=str1.split(',')
##print(tongji(list1))
def tongji(list1):
    set1=set(list1)
    if len(set1)<len(list1): #小于表示有重复元素,集合可以去除重复元素
        return True
    else:
        return('列表没有重复元素')
print(tongji(list1))


def tongji(list1):
    for p in list1:
        num=list1.count(p)
        if num>1:
            return True
        else:
            continue
str1=''
while True:
    str2=input('输入列表元素,以回车结束')
    str1+=str2
    if str2=='':
        break
print(str1)
list1=list(str1)
print(tongji(list1))

输入列表元素,以回车结束1
输入列表元素,以回车结束2
输入列表元素,以回车结束3
输入列表元素,以回车结束
123
None

6.3 重复元素判定(续)

利用集合的无重复性改写6.2,获得一个更快更简洁的版本。

6.4 文本字符分析

编写程序接收字符串,按字符出现频率的降序打印字母。分别尝试录入一些中英文文章片段,比较不同语言之间字符频率的差别。

#文本字符分析
#统计输入的字符串,按字符出现频率并按照降序方式打印字母

text = input("请输入一段文本(回车退出):")


while text != '':#如果为空则退出循环
    d = {}
    for word in text:
        d[word] = d.get(word,0) + 1

        #转为列表类型对其排序
    ls = list(d.items())
    ls.sort(key=lambda x:x[1],reverse = True)#以记录第二列排序

    for i in range(len(ls)):
        word, count = ls[i]
        print("{0:<10}{1:>5}".format(word,count))

    text = input("请输入一段文本(回车退出):")


请输入一段文本(回车退出):玛娜桓那兰那阿薛那
那 3
玛 1
娜 1
桓 1
兰 1
阿 1
薛 1

6.5 生日悖论分析

生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。
编写程序中,输出在不同随机样本数量下,23个人中至少有两个人生日相同的概率。

import random
def duplicate(lst):
    lst1=set(lst)
    if len(lst)>len(lst1):
        return True
    else:
        return False
def generate(numbers):
    birthday=[]
    for i in range(numbers):
        birthday.append(random.randint(1,365))
    return birthday
def match(students,samples):
    count=0
    birthday=[]
    for i in range(samples):
        birthday=generate(students)
        if duplicate(birthday):
            count+=1
    return count
students=23
simulations=100000
count=match(students,simulations)
rate=(float(count)/simulations)*100
print("rate is %f%%"%rate)

rate is 50.736000%
在这里插入图片描述

6.6 《红楼梦》人物统计

编写程序统计红楼梦中前20位出场最多的人物。

第七章作业

7.1Python源文件改写

编写一个程序,读取一个Python源程序文件,将文件中所有除保留字外的小写字母换成大写字母,生成后的文件要能够被Python解释器正确执行。

7.2 图像文件压缩

使用PIL库对图片进行等比例压缩,无论压缩前文件大小如何,压缩后文件小于10KB.

7.3 中文字符画

参考实例12,编写程序合理选取中文字符构造字符表,生成中文字符画。

7.4 CSV解析

改编实例14,使得对CSV的转换能够识别并保留数据内部的逗号。

7.5 制作英文学习词典

7.6 多重释义

修改7.5,使其能够对单词添加多重释疑义,不同释义用逗号分开

from math import *
class Circle2D(object):
    def __init__(self,x=0,y=0,radius=1):
        self.radius=radius
        self.x=x
        self.y=y

    def getArea(self): #返回圆面积
        radius=self.radius
        a=pi*radius*radius
        print("面积是{}".format(a))

    def getPerimeter(self):#返回周长
        radius = self.radius
        b=2*pi*radius
        print("周长是{}".format(b))

    def contains(self,a,b): #判断是否在圆内
        radius = self.radius
        x=self.x
        y=self.y
        m=((x-a)**2+(y-b)**2)*0.5
        if m < radius:
            return True
        else:
            return False

c=Circle2D(2,2,5.5)
print(c.getArea())
print(c.getPerimeter())
print(c.contains(3,3))

D:\coder\randomnumbers\venv\Scripts\python.exe D:/coder/randomnumbers/chengxusheji.py
面积是95.03317777109123
None
周长是34.55751918948772
None
True

  • 14
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
随着国家大数据战略的深入实施,各行业智慧化建设急需数据分析人才和智能应用人才。智慧化简单来说是一个以机器替换人力的过程,而机器的“灵魂”是程序。Python已经成为公认的驱动大数据智能应用的主流编程语言Python程序设计的书籍已经琳琅满目,每一本书都凝聚了作者对Python的理解和对程序设计的认识,都是作者编程开发和教学经验的总结,都折射出作者的专业背景。由于大数据专业学生对程序设计的要求不是很高,但又需要具备一定的计算思维能力,熟悉用程序进行数据分析的一般流程,因此程序设计教材要言不甚深、文不甚俗,既要覆盖相关技术,又不能面面俱到,注重对问题的分析和解释,用程序表达算法。鉴于此,我们编写了本书。 本书每一章的标题都以Python开头,凸显Python在各个部分都有其独特的编程理念和方法。与其他高级编程语言如C、C++和Java等相比,Python在数据的表示、处理和可视化方面都有绝对的优势。有编程基础的学习者在学习Python时最好能忘掉以往程序设计语言的语法,彻底转变观念,以全新的姿态融入到Python的编程特点和规律之中。如变量定义、数据类型、数据结构、控制结构、类和对象、文件访问、数据分析和可视化,每一部分都有其特别之处,都值得我们重新认识,重新使用,重新熟悉。每一章开始的思维导图都是对本章技术脉络的梳理,开门见山地给学习者展示本章的知识和技术体系,以便学习者在学习过程中始终能保持思路清晰和整体把握。每一章开头的本章导读都是编者多年来程序开发与设计教学经验的提炼与升华,都是对程序设计的理解和感悟,值得学习者深入领会。每一章开头的本章要点都是要求学习者深入理解的重要知识和熟练掌握的关键技术。每一章的小结都是对本章要点的具体解释,供学习者复习查询。 本书为河北省高等教育教学改革研究与实践项目“新工科背景下警务大数据应用专业人才培养模式与教学实践研究”(编号:2018GJJG450)的阶段性成果。 下面是本书的体系结构图。 第1章Python编程初步。学习本章,要了解Python作为一种计算机程序设计脚本语言,结合了解释性、编译性和互动性的特点;了解在Linux和Windows中安装Python的方法;了解IDLE、PyCharm和Jupyter三种常用Python程序编辑环境。工欲善其事,必先利其器,通过对本章的学习,学习者可拥有一个强大的编程工具,从此开启数据分析编程之旅。 第2章Python语言基础。Python作为一门与计算机交流的编程语言,有着跟自然语言相似的特点:字、词、句、段落、篇章,以及相应的行文语法规则。学习本章,要理解程序行文的字词句,主要包括基本数据类型、常量和变量、运算符和表达式;理解程序的段落和篇章,主要包括常用内置函数、库函数和系统函数的使用;掌握程序的语法规则,主要包括常用的变量定义和标识符命名规则、语句组织成文编码规则等。这些都是程序设计的基础,学习者只有对此熟练掌握后,才能在后的学习中得心应手。 第3章Python组合数据类型。组合数据类型是Python语言区别于其他高级编程语言的一大特色,通过组合数据类型,省去了其他语言各种复杂数据结构的设计,给编程人员带来了极大的方便,这也是Python流行于数据分析领域的原因之一。学习本章,要熟练掌握Python组合数据类型(列表、元组、字符串、字典、集合)的创建、访问和常见基本操作,以及序列解包功能。 第4章 Python控制结构。针对物质随时间由简单向复杂、由低级向高级发展的顺序,Python语言有相应的顺序结构语句;针对物质运动发展的条件性,Python语言有相应的选择结构语句;针对物质运动的波浪式前进螺旋式上升规律,Python语言有相应的循环结构语句。学习本章,要从马克思主义自然哲学视角理解Python语言在描述物质运动规律时的表达方式;掌握用Python语言描述常用算法,解决一些基本问题的方式。 第5章 Python函数与模块。有些经常用到的能实现特定功能的代码块,我们总是不希望每次用到时都重写一遍,甚至不希望复制一遍,但又想重复使用。Python里这些经常重用的代码块以函数(Function)的形式被定义,每一次复用被称为函数调用,计算机依然要执行重用的代码。学习本章,要理解函数的概念,掌握定义函数的方法,深刻理解函数调用中参数的传递(值传递、地址传递),理解变量的作用域(变量的作用范围或变量的生命周期),理解函数集合模块、包等概念,掌握模块和包的创建及使用方法。 第6章 Python面向对象程序设计。面向过程的程序设计方法难以保证程序的安全性和代码的可重用性,而面向对象的程序设计方法能够更好地提高大型程序的质量和开发效率,增强程序的安全性和提高代码的可重用性。学习本章,重在理解面向对象程序设计思想、类和对象的概念

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值