小编reg*_*ard的帖子

给出两点返回直线方程的方法

我有一个类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)

python python-3.x

15
推荐指数
4
解决办法
3万
查看次数

尝试用数组实现递归河内塔算法

尽管这里有很多关于这个问题的问题,但没有一个能帮助我解决这个问题。我了解递归是什么,我可以在 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)

有什么帮助吗?

python arrays algorithm recursion python-3.x

5
推荐指数
1
解决办法
1808
查看次数

我的Python 3模块应该在哪里?

我最近在我的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工作,所以它必须在某个地方.

python macos osx-snow-leopard python-3.x

4
推荐指数
1
解决办法
982
查看次数

π的莱布尼兹公式 - 这有什么用的吗?(蟒蛇)

我正在做一个练习,要求使用莱布尼兹公式来近似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 python-3.x

2
推荐指数
1
解决办法
2万
查看次数

列表中所有值的平均值 - 有更多'Pythonic'方法吗?

所以我正在关注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)

提前致谢!

python python-3.x

2
推荐指数
1
解决办法
2802
查看次数

为什么我的字典值不是以整数形式存储的?

我正在编写一个函数,它返回字符串中每个字母的出现次数:

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)

任何帮助表示赞赏.提前致谢!

python python-3.x

2
推荐指数
1
解决办法
73
查看次数

重载运算符必须采用零个或一个参数

是的,之前已经问过这个问题,但问题是运营商是一个会员功能,而这不是这里的情况.这些是我的文件:

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)

c++ operator-overloading

2
推荐指数
1
解决办法
7015
查看次数

有没有办法循环列表并将所有内容转换为整数?

我正在编写一个程序来计算成绩列表中的平均值,并将其与学生的名字一起打印出来,但是当我尝试将所有成绩加总并将它们除以时,我会得到一个类型错误.名单.这就是我所拥有的:

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)

python python-3.x

1
推荐指数
1
解决办法
729
查看次数