我有一个类Point,由一个带有x和y坐标的点组成,我必须编写一个方法来计算并返回连接Point对象的直线方程和另一个Point作为参数传递的对象(my_point.get_straight_line(my_point2).我知道如何在yy 1 = m(xx 1)的纸上计算,我已经有了my_point.slope(my_point2)计算方法m,但我无法真正理解如何将方程转换为Python.这是整个类:
class Point:
def __init__(self,initx,inity):
self.x = initx
self.y = inity
def getx(self):
return self.x
def gety(self):
return self.y
def negx(self):
return -(self.x)
def negy(self):
return -(self.y)
def __str__(self):
return 'x=' + str(self.x) + ', y=' + str(self.y)
def halfway(self,target):
midx = (self.x + target.x) / 2
midy = (self.y + target.y) / 2
return Point(midx, midy)
def distance(self,target):
xdiff = target.x - …Run Code Online (Sandbox Code Playgroud) 尽管这里有很多关于这个问题的问题,但没有一个能帮助我解决这个问题。我了解递归是什么,我可以在 2^n-1 次移动中自己轻松解决河内塔,但是我在用 Python 编写算法时遇到了麻烦。基本情况有效,但我似乎无法找到一种方法将“将 n-1 个磁盘移动到辅助挂钩,然后将最大磁盘移动到目标挂钩”转换为数组操作,我不明白为什么最后一个元素当我在递归调用中弹出它时,它不会从数组中删除。
这是程序:
peg_a = [1,0]
peg_b = []
peg_c = []
def hanoi(start,aux,target):
print(start,aux,target)
if len(start) == 1:
target.append(start.pop())
print(start,aux,target)
else:
hanoi(start[1:],target,aux)
target.append(start.pop())
print(start,aux,target)
hanoi(peg_a, peg_b, peg_c)
Run Code Online (Sandbox Code Playgroud)
这是打印出来的:
[1, 0] [] []
[0] [] []
[] [] [0]
[1] [0] [0]
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
我最近在我的Mac OSX 10.6.8上安装了Python 3,直到现在我还没有遇到任何模块或导入问题.我正在编写一个函数来测试三角形是否根据边的长度成直角,并且练习所在的指南有一堆相等的测试,所以我可以看看它是否有效:
testEqual(is_rightangled(1.5,2.0,2.5), True)
testEqual(is_rightangled(4.0,8.0,16.0), False)
testEqual(is_rightangled(4.1,8.2,9.1678787077), True)
testEqual(is_rightangled(4.1,8.2,9.16787), True)
testEqual(is_rightangled(4.1,8.2,9.168), False)
testEqual(is_rightangled(0.5,0.4,0.64031), True)
Run Code Online (Sandbox Code Playgroud)
我应该从一个名为test的模块中导入一个名为testEqual(a,b,c)的函数,因为指南中的示例程序以from test import testEqual,但是当我在我的文件中键入它时,我得到了这样的消息:
from test import testEqual
ImportError: cannot import name testEqual
Run Code Online (Sandbox Code Playgroud)
我想我应该指定测试模块的路径,但是我无法在我的计算机的任何地方找到它的Python 3库 - 只是随计算机安装的2.x版本/Library/Python.import turtle并且import math工作,所以它必须在某个地方.
我正在做一个练习,要求使用莱布尼兹公式来近似pi值的函数.这些是对维基百科的解释:


逻辑思维很容易找到我,但我没有接受过很多关于数学的正规教育,所以我对第二个最左边的符号代表什么感到遗憾.我尝试制作代码pi = ( (-1)**n / (2*n + 1) ) * 4,但是返回1.9999990000005e-06而不是3.14159 ...,所以我使用了累加器模式(因为指南的章节也提到了它们)并且它工作正常.然而,我不禁想到它有点做作,而且可能有更好的方法,因为Python专注于简单性并使程序尽可能短.这是完整的代码:
def myPi(n):
denominator = 1
addto = 1
for i in range(n):
denominator = denominator + 2
addto = addto - (1/denominator)
denominator = denominator + 2
addto = addto + (1/denominator)
pi = addto * 4
return(pi)
print(myPi(1000000))
Run Code Online (Sandbox Code Playgroud)
有谁知道更好的功能?
所以我正在关注Python的初学者指南,我得到了这个练习:
创建一个包含0到1000之间100个随机整数的列表(使用迭代,追加和随机模块).编写一个名为的函数
average,将列表作为参数并返回平均值.
我在几分钟内轻松解决了这个问题,但本章还提到了几种遍历列表并将多个值分配给列表和变量的方法,我不确定我是否完全理解,所以我不知道是否可以做到这在较少的线条.这是我的答案:
import random
def createRandList():
newlist = []
for i in range(100):
newint = random.randrange(0,1001)
newlist.append(newint)
return newlist
def average(aList):
totalitems = 0
totalvalue = 0
for item in aList:
intitem = int(item)
totalitems = totalitems + 1
totalvalue = totalvalue + intitem
averagevalue = totalvalue/totalitems
return averagevalue
myList = createRandList()
listAverage = average(myList)
print(myList)
print(listAverage)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在编写一个函数,它返回字符串中每个字母的出现次数:
def count_all(text):
text = text.lower()
counts = {}
for char in text:
if char not in counts:
counts.setdefault(char,[1])
else:
counts[char] = counts[char] + 1
print(counts)
count_all('banana')
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行它时,我收到以下错误消息:
Traceback (most recent call last):
File "countall.py", line 11, in <module>
count_all('banana')
File "countall.py", line 8, in count_all
counts[char] = counts[char] + 1
TypeError: can only concatenate list (not "int") to list
Run Code Online (Sandbox Code Playgroud)
我怀疑它正在读取key的值char作为带有单个项目而不是整数的列表,但我不完全确定.我为每个字母创建键并将它们的值赋值为1没有任何问题,因为这是我在注释掉else子句时打印出来的:
Mac:python mac$ python3 countall.py
{'a': [1], 'b': [1], 'n': [1]}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.提前致谢!
是的,之前已经问过这个问题,但问题是运营商是一个会员功能,而这不是这里的情况.这些是我的文件:
minmax.h
#ifndef MINMAX_H
#define MINMAX_H
class MinMax
{
private:
int m_nMin;
int m_nMax;
public:
MinMax(int nMin, int nMax);
int GetMin() { return m_nMin; }
int GetMax() { return m_nMax; }
friend MinMax operator+(const MinMax &cM1, const MinMax &cM2);
friend MinMax operator+(const MinMax &cM, int nValue);
friend MinMax operator+(int nValue, const MinMax &cM);
};
#endif // MINMAX_H
Run Code Online (Sandbox Code Playgroud)
minmax.cpp
#include "minmax.h"
MinMax::MinMax(int nMin, int nMax)
{
m_nMin = nMin;
m_nMax = nMax;
}
MinMax MinMax::operator+(const MinMax &cM1, const MinMax &cM2)
{ …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序来计算成绩列表中的平均值,并将其与学生的名字一起打印出来,但是当我尝试将所有成绩加总并将它们除以时,我会得到一个类型错误.名单.这就是我所拥有的:
def average_grade(afile):
aline = afile.readline()
grades = []
while aline:
info = aline.split()
grades = info[1:]
average = sum(grades) / len(grades)
print(info[0],average)
aline = afile.readline()
my_file = open('studentdata.txt','r')
average_grade(my_file)
my_file.close()
Run Code Online (Sandbox Code Playgroud)
这是文件的内容:
joe 10 15 20 30 40
bill 23 16 19 22
sue 8 22 17 14 32 17 24 21 2 9 11 17
grace 12 28 21 45 26 10
john 14 32 25 16 89
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误消息:
Traceback (most recent call last):
File "averagegrade.py", line 13, in …Run Code Online (Sandbox Code Playgroud)