相关疑难解决方法(0)

打印不带字典名称的字典键?如何/为什么?

所以我创建了一个字典来设置一个小游戏的难度级别.

diff_dict = {'easy':0.2, 'medium':0.1, 'hard':0.05} # difficulty level dict
Run Code Online (Sandbox Code Playgroud)

键将是难度名称和值,我会用来计算难度的一些比率.

所以我试图找出如何只向用户打印密钥:

print('\nHere are the 3 possible choices: ',diff_dict.keys())
Run Code Online (Sandbox Code Playgroud)

这将打印为:

Here are the 3 possible choices:  dict_keys(['hard', 'easy', 'medium'])
Run Code Online (Sandbox Code Playgroud)

显然我不想显示字典名称,所以我继续搜索,我找到了一个有效的解决方案:

diff_keys = diff_dict.keys()
print ('\nHere are the 3 possible choices: ',list(diff_keys))
Run Code Online (Sandbox Code Playgroud)

但我仍然想知道是否有其他方法可以实现这一点,那么为什么等等.所以我在这里使用Qs:

  1. 我可以在不创建新元素的情况下实现相同的结果,例如diff_keys吗?

  2. 为什么要diff_dict.keys显示字典.名称?难道我做错了什么?

  3. 另外,如何在没有字符串引号(')的情况下打印键或其他元素(如列表,元组等)?

  4. 与上面的#3相同但括号([])

谢谢和cheerio :-)

python printing dictionary key python-3.x

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

创建文本行,'\n'.join(my_list) 缺少尾随换行符 :-(

我想将 N 个字符串加入新字符串。每个项目一行:

my_list=['one', 'two', 'three']
lines='\n'.join(my_list)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我需要在每行末尾添加一个尾随换行符 lines. 在上述解决方案中,最后一行缺少换行符。

我搜索了一个简单且新手友好的解决方案。

...我使用 Python 2.7

python string

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

Python 预定义的 __str__ 方法行为异常

下面是一个简单的 Python 类的定义。

class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

    def __str__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

如您所见,我们重写了__str__返回学生姓名的方法。例如,如果我声明一个变量x = Student("Trevor", 7)并随后调用print(x),我会Trevor在控制台中看到输出。一切都很好。

但是,如果我执行下面的代码片段,发生的事情是非常出乎意料的,它几乎让我确信我们生活在模拟中,没有什么是真实的。

s1 = Student("James", 11)
s2 = Student("Charlie", 8)
s3 = Student("Alice", 9)
s4 = Student("Dana", 12)
students = [s1, s2, s3, s4]
print(students)
Run Code Online (Sandbox Code Playgroud)

我的 Java 大脑期望输出为[James, Charlie, Alice, Dana],但我看到的是[<__main__.Student object at 0x00A7E6D0>, <__main__.Student object at 0x00AFB310>, <__main__.Student object at 0x00AFBB68>, <__main__.Student object at 0x00AFBAD8>]. …

python python-3.x

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

使用python简化有理数

我正在研究python中处理有理数的问题,它有一个简化它的方法.例如12/8给出3/2.我已经完成了这个问题,并得到了正确的答案,但我已经找到了分子和分母的gcd.可能有人帮助使用一些内置的特殊python功能或函数,模块或python独有的任何东西,就像你说的"Pythonic方式!"

是否有这样的方法或任何测试案例应该包括在内以涵盖所有可能性?

这是我的代码:

class RationalNumber:
def __init__(self, n, d=1):
    self.n=n
    self.d=d

'''def gcd(self, a, b): // I have taken out gcd by two methods: recursion and while loop
    if b>a:
        t=a
        a=b
        b=t

    while a%b != 0:
        r=a%b
        a=b
        b=r

    return b
    '''

def gcd(self, a, b):
    if a%b==0:
        return b
    else:
        return self.gcd(b, a%b)

def simplify(self):
    x=self.gcd(self.n, self.d)
    self.n=self.n/x
    self.d=self.d/x

    return RationalNumber(self.n, self.d)

def __str__(self):
    print "%s/%s"%(self.n, self.d)

r1 = RationalNumber(12,8)
print r1.simplify()
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,它会给出答案并给出错误:

Traceback …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 greatest-common-divisor

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

将元组转换为该tupple的字符串

在我的代码中的某个时刻,我有一个元组列表,我需要传递为一个字符串,但是一个包含元组结构元素的字符串,即comas和括号.

目前我这样做:

   listofv = ''
   for tu in listof2tuple:
        ltu = '(' + tu[0] + ',' + tu[1] + ')'
        listofv.append(ltu)
   finalstring = ','.join(listofv)
Run Code Online (Sandbox Code Playgroud)

虽然这样做有点奇怪,因为在IDLE中打印元组会显示一个字符串,这正是我想要的.

这样做的好方法是什么?

python string tuples

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

python:初学者不明白结果:附加一个带有类的列表

我是 Python 的初学者,不了解以下内容:我定义了一个类和一个列表。当我想在附加后打印列表时,我没有得到字符串,尽管我有一个方法应该返回一个字符串,对吗?我不明白这里有什么问题.. :/ 我希望结果是 [14,12] ... 如果有人知道我做错了什么,请告诉我:/

class av:

    def __init__(self, num):
        self.num = num
    def __str__(self,num):
        self.num = num
        return str(self.num)

lst = []

lst.append(av(14))

lst.append(av(12))

print(lst)
Run Code Online (Sandbox Code Playgroud)

结果:

[<__main__.av object at 0x102503dd0>, <__main__.av object at 0x102505d90>]
Run Code Online (Sandbox Code Playgroud)

python

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

实现递归回溯器以生成迷宫

我正在尝试创建一个递归创建迷宫函数,但是,我被卡住了,因为我不知道如何递归调用它并放置墙壁。

有人可以告诉我如何编辑我的代码以使其正常工作吗?谢谢

编辑:由于我没有添加我的迷宫类,我想我会添加它来帮助查看整个代码。

class Maze:
    def __init__(self, Width, Height):
        assert Width>= 1 and Height>= 1

        self.Width= Width
        self.Height= Height
        self.board = np.zeros((Width, Height), dtype=WALL_TYPE)
        self.board.fill(EMPTY)

    def set_borders(self):
        self.board[0, :] = self.board[-1, :] = WALL
        self.board[:, 0] = self.board[:, -1] = WALL

    def is_wall(self, x, y):
        assert self.in_maze(x, y)
        return self.board[x][y] == WALL

    def set_wall(self, x, y):
        assert self.in_maze(x, y)
        self.board[x][y] = WALL

def create_maze(Width, Height, seed=None):
        Width = (Width // 2) * 2 + 1
        Height = (Height // 2) …
Run Code Online (Sandbox Code Playgroud)

python recursive-backtracking

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

如何在Python中对此列表进行排序?

我有一个列表,其中包含一个类的简单对象,比如Person,即:

my_list [Person<obj>, Person<obj> ..]
Run Code Online (Sandbox Code Playgroud)

Person object很简单,有各种变量,值如下:

Person_n.name = 'Philip'
Person_n.height = '180'
Person_n.lives_in = 'apartment' 
Run Code Online (Sandbox Code Playgroud)

所以你可以看到,所有这些都Person住在某处,无论是公寓,房屋还是船.

我想创建一个新的列表,或字典(也不能不管哪个),其中我有这个列表排序的方式,他们通过自己的lives_in值进行分组人口最多的选择是一把手在新的列表(或字典,其中lives_in值将是关键).

例如:

new_list = [('apartment', [Person_1, Person_5, Person_6, Person_4]), ('house': [Person_2, Peson_7]), ('boat': [Person_3])]
Run Code Online (Sandbox Code Playgroud)

我是Python的新手,我遇到了无休止的循环.必须有一种简单的方法来做到这一点,而不需要循环4次.

什么是Pythonic方法来实现这个理想的新列表?

python python-2.7

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

Python为什么变量和返回显示来自打印变量的差异值?

>>> pkt = sniff(count=2,filter="tcp")
>>> raw  = pkt[1].sprintf('%Padding.load%')
>>> raw
"'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"


>>> print raw
'\x04\x00\x00\x00\x00\x00\x00\x00g\xc4|\x00\x00\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)

使用打印时的原始产量不同输出

python

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

继承Python并覆盖__str__

我有兴趣做类似于Django对列表所做的事情,例如:

在django shell中

In [4]: from TimePortal.models import Rules

In [5]: Rules.objects.all()
Out[5]: [<Rules: day_limit>]
Run Code Online (Sandbox Code Playgroud)

我尝试过以下操作:

class TimeEntryList(list):

    def __str__(self):
        return ';'.join([str(i) for
                        i in self.__getslice__(0, self.__len__())])
Run Code Online (Sandbox Code Playgroud)

这似乎适用于普通的Python shell:

In [54]: a=TimeEntryList(('1-2','2-3'))
In [58]: print a
1-2;2-3

In [59]: str(a)
Out[59]: '1-2;2-3'
Run Code Online (Sandbox Code Playgroud)

但是在我的应用程序中,TimeEntryList实例实际上是一个TimeEntry定义如下的对象列表:

class TimeEntry(object):

    def __init__(self, start, end):
        self.start = start
        self.end = end
        #self.duration = (self.end - self.start).seconds / 3600.0

    @property
    def duration(self):
        return (self.end - self.start).seconds / 3600.0

    @duration.setter
    def duration(self, value):
        self._duration …
Run Code Online (Sandbox Code Playgroud)

python inheritance overriding

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

Python - 当我在没有'print'的解释器中编写语句时会发生什么?

我刚从文档开始学习python 2.7.11.我是做这是在那里给出的例子,但在弄糊涂了print,并r进行了介绍.我对如何将反斜杠显示为输出感到困惑.这与字符转义相关,但到目前为止我只是用于\b退格,\n新行,\\反斜杠

这就是我所说的:

在此输入图像描述

有四种不同的情况:

  1. 既不使用print也不使用r

  2. 使用print但不是r

  3. 使用r但不是print

  4. 使用printr

并且他们都提供不同的输出.我无法理解四种情况下实际发生的事情.

python python-2.7

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

错误:找不到人

#C:/Python32

class Person:
    def __init__(self, name  = "joe" , age= 20 , salary=0):
        self.name = name
        self.age = age
        self.salary = salary
    def __printData__(self):
            return " My name is {0}, my age is {1} , and my salary is {2}.".format(self.name, self.age, self.salary)
    print(Person)

class Employee(Person):
    def __init__(self, name, age , salary ):
        Person. __init__ (self,name = "Mohamed"  , age = 20 , salary = 100000)
        def __printData__(self):
            return " My name is {0}, my age is {1} , and my …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

-3
推荐指数
1
解决办法
87
查看次数