Python学习笔记(2):课后作业一

1. 正整数前n项和

输入一个正整数n,求1+2+3+…+n的累加和

在VScode中写出代码如下:

n = int(input('Input an int number: '))

print(sum(range(1,n + 1)))

运行输入结果:

Input an int number: 100
5050
2. 计算分段函数

本题目要求计算分段函数f(x)的值:
y = f ( x ) = { 1 x , x ≠ 0 0 , x = 0 y = f(x) = \left\{\begin{aligned} \frac{1}{x},x \neq 0 \\ 0,x = 0 \end{aligned} \right. y=f(x)=x1,x=00,x=0
要求在一行输入实数x,在一行按”f(x) = result“的格式输出,其中x与result都保留一位小数

在VScode中写出代码如下:

x = float(input('A number please: '))

if x == 0:
    print('f(x) = 0')
else:
    print('f({0:.1f}) = {1:.1f}'.format(x,1/x))

运行得:

A number please: 2
f(2.0) = 0.5
3. 阶梯电价

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。

输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

在VScode中写出代码如下:

p = float(input('Input how much power you used: '))

if 0 < p <= 50:
    print('cost = {:.2f}'.format(p * 0.53))
elif p > 50:
    print('cost = {:.2f}'.format(50 * 0.53 + (p - 50) * 0.58))
else:
    print('Invalid input!')

运行结果如下:

Input how much power you used: 30
cost = 15.90

Input how much power you used: 70
cost = 38.10

Input how much power you used: -20
Invalid input!
4. 特殊a串数列求和

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

输入格式:
输入在一行中给出不超过9的正整数a和n。

输出格式:
在一行中按照“s = 对应的和”的格式输出。

在VScode中写出代码如下:

a,n = list(input('a and n please: ').split())

n = int(n)
s = 0

for i in range(1,n+1):
    s += int(a * i)

print('s = {}'.format(s))

运行结果如下:

a and n please: 2 3
s = 246
5. 求奇数和

本题要求计算给定的一系列正整数中奇数的和。

输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。

输出格式:
在一行中输出正整数序列中奇数的和。

在VScode中写出代码如下:

lst = list(map(int,input('Please input some numbers: ').split()))

n = len(lst)
s = 0

for i in range(0,n-1):
    if lst[i] % 2 == 1:
        s += lst[i]
    else :
        continue
print(s)

运行结果如下:

Please input some numbers: 8 7 4 3 70 5 6 101 -1
116
6. 交错序列前n项和

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,结果保留三位小数。

在VScode中写出代码如下:

n = int(input('Please input an int number: '))
s = 0

for i in range(1,n + 1):
    s = s + (-1) ** (i + 1) * (i) / (2 * i - 1)
print('%.3f' % s)

其输出结果如下:

Please input an int number: 5
0.917
7. 编写程序,输出下边三种图形

嘿嘿嘿

在VScode中写出代码如下:

a = '*'
b = ' '

for i in range(1,6):
    print(a * i)
print('')

for i in range(1,6):
    print(b * (5 - i) + a * (2 * i - 1) + b * (5 - i))
print('')

for i in  range(1,4):
    print(b * (3 - i) + a * (2 * i - 1) + b * (3 - i))

for i in  range(1,3):
    print(b * i + a * (5 - 2 * i) + b * i)

print('\nDone!')

其输出为:

*
**
***
****
*****

    *
   ***
  *****
 *******
*********

  *
 ***
*****
 ***
  *

Done!
8. 计数踢出问题

有30⼈围成⼀圈,从1到30依次编号。每个人开始报数,报到9的自动离开。当有人离开时,后⼀个人开始重新从1报数,以此类推。求离开的前10人编号。

  由此,给出Python代码如下:

people = int(input('请输入玩游戏的人数:'))

circle = list(range(1,people+1))
n = 1
i = 9

while n <= people:
    while i <= len(circle) - 1:
        circle_pop = circle.pop(i-1)
        if n <= 10:
        	print('第 {0} 个离开的人编号为 {1}'.format(n,circle_pop))
        if i == 0: # 千年虫
            i += 1
        n += 1
        i += 8
    else:
        i -= len(circle)

  此处,给出人数为30人时的输出结果:

请输入玩游戏的人数:30
第 1 个离开的人编号为 9
第 2 个离开的人编号为 18
第 3 个离开的人编号为 27
第 4 个离开的人编号为 6
第 5 个离开的人编号为 16
第 6 个离开的人编号为 26
第 7 个离开的人编号为 7
第 8 个离开的人编号为 19
第 9 个离开的人编号为 30
第 10 个离开的人编号为 12
9. 求完整数

问题描述

求某一范围内完数的个数。

如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1、2、3,而 6=1+2+3,因此6是“完数”。

在VScode中写出代码如下:

com = []

for i in range(1,1001):
    cau = []
    for j in range(1,i):
        if i % j == 0:
            cau.append(j)
    if sum(cau) == i:
        com.append(i)

for i in range(len(com)):
    print(com[i],end = ' ')

其运行结果如下:

6 28 496 
10. 求素数和

求100到1000内所有素数的和

在VScode中写出代码如下:

su = []

for i in range(100,1001):
    cau = []
    for j in range(1,i):
        if i % j == 0:
            cau.append(j)
    if sum(cau) == 1:
        su.append(i)

print(sum(su))

其运行结果:

75067
11. 猴子吃桃问题

一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。

在VScode中写出代码如下:

p = 1

for i in range(1,10):
    p = (p + 1) * 2

print('第一天桃子的数量 = %d' % p)

其运行结果:

第一天桃子的数量 = 1534
12. 四则运算

在一行中输入一个数字,在一行中输入一个四帜运算符(+,-,*,/),在一行中输入一个数字,在一行中输出运算结果(小数保留2位)

在VScode中写出代码如下:

a = input('Input a number: ')
b = input('Input a symbol: ')
c = input('Input a number: ')

d = a + b + c

print(eval(d))

其运行结果如下:

Input a number: 2  
Input a symbol: *
Input a number: 12
24
13. 求矩阵各行元素之和

本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。

输出格式:
每行输出对应矩阵行元素之和。

在VScode中写出代码如下:

r,c = map(int,input('Input the row and col quantity: ').split())

m = []
for i in range(1,r + 1):
    m.append(list(map(int,input('Input the {} row\'s elements: '.format(i)).split())))

for i in range(len(m)):
    print(sum(m[i]))

其运行结果如下:

Input the row and col quantity: 2 3
Input the 1 row's elements: 1 2 3
Input the 2 row's elements: 4 5 6
6
15
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您解答这个问题!本次我们将学习如何用 Python 实现《机器学习》周志华教授第十四章的概率图模型习题。在这里,我们将使用 Python 的 pgmpy 库来构建和分析概率图模型。 首先,我们需要安装 pgmpy。可以使用 pip 安装: ```python pip install pgmpy ``` 安装完成后,我们就可以开始实现习题了。 #### 习题 14.1 考虑一个三元组 $(X, Y, Z)$,其 $X$ 是二元随机变量,$Y, Z$ 是一元随机变量,试构造一个无向图结构,使其成为正态分布的一个合法图模型。 我们可以使用 pgmpy 来创建这个无向图模型。代码如下: ```python from pgmpy.models import MarkovModel # 创建一个空的无向图模型 model = MarkovModel() # 添加变量节点 model.add_nodes_from(['X', 'Y', 'Z']) # 添加边 model.add_edges_from([('X', 'Y'), ('X', 'Z')]) # 将模型转换成正态分布模型 from pgmpy.factors.continuous import ContinuousFactor from pgmpy.inference import Inference # 定义正态分布的 mean 和 covariance mean = [0, 0, 0] covariance = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] # 创建正态分布因子 factor = ContinuousFactor(['X', 'Y', 'Z'], mean, covariance) # 将因子添加到模型 model.add_factors(factor) # 执行因子分解 inference = Inference(model) factors = inference.factors() ``` 在上面的代码,我们首先创建了一个空的无向图模型,然后添加了三个变量节点 $X, Y, Z$ 和两条边 $(X, Y), (X, Z)$。接着,我们使用 `pgmpy.factors.continuous.ContinuousFactor` 来定义正态分布的 mean 和 covariance,并将其添加到模型。最后,我们使用 `pgmpy.inference.Inference` 来执行因子分解,得到了模型的所有因子。 #### 习题 14.2 考虑一个四元组 $(X_1, X_2, X_3, X_4)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image.png](attachment:image.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X3', 'X2'), ('X4', 'X2')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码,我们首先创建了一个空的有向图模型,然后添加了四个变量节点 $X_1, X_2, X_3, X_4$ 和四条边 $(X_2, X_1), (X_3, X_1), (X_3, X_2), (X_4, X_2)$。最后,我们打印出了模型的边结构。 #### 习题 14.3 考虑一个五元组 $(X_1, X_2, X_3, X_4, X_5)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image-2.png](attachment:image-2.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4', 'X5']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X4', 'X2'), ('X5', 'X2'), ('X5', 'X3')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码,我们首先创建了一个空的有向图模型,然后添加了五个变量节点 $X_1, X_2, X_3, X_4, X_5$ 和五条边 $(X_2, X_1), (X_3, X_1), (X_4, X_2), (X_5, X_2), (X_5, X_3)$。最后,我们打印出了模型的边结构。 #### 习题 14.4 考虑一个六元组 $(X_1, X_2, X_3, X_4, X_5, X_6)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image-3.png](attachment:image-3.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4', 'X5', 'X6']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X4', 'X2'), ('X5', 'X3'), ('X6', 'X4'), ('X6', 'X5')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码,我们首先创建了一个空的有向图模型,然后添加了六个变量节点 $X_1, X_2, X_3, X_4, X_5, X_6$ 和六条边 $(X_2, X_1), (X_3, X_1), (X_4, X_2), (X_5, X_3), (X_6, X_4), (X_6, X_5)$。最后,我们打印出了模型的边结构。 #### 习题 14.5 考虑一个二元组 $(X, Y)$,其 $X$ 是一元随机变量,$Y$ 是二元随机变量,试构造一个有向图结构,使其成为正态分布的一个合法图模型。 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X', 'Y1', 'Y2']) # 添加边 model.add_edges_from([('X', 'Y1'), ('X', 'Y2')]) # 将模型转换成正态分布模型 from pgmpy.factors.continuous import ContinuousFactor from pgmpy.inference import Inference # 定义正态分布的 mean 和 covariance mean = [0, 0, 0] covariance = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] # 创建正态分布因子 factor = ContinuousFactor(['X', 'Y1', 'Y2'], mean, covariance) # 将因子添加到模型 model.add_factors(factor) # 执行因子分解 inference = Inference(model) factors = inference.factors() ``` 在上面的代码,我们首先创建了一个空的有向图模型,然后添加了三个变量节点 $X, Y_1, Y_2$ 和两条边 $(X, Y_1), (X, Y_2)$。接着,我们使用 `pgmpy.factors.continuous.ContinuousFactor` 来定义正态分布的 mean 和 covariance,并将其添加到模型。最后,我们使用 `pgmpy.inference.Inference` 来执行因子分解,得到了模型的所有因子。 以上就是本次的答案,希望对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值