所以我创建了一个字典来设置一个小游戏的难度级别.
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:
我可以在不创建新元素的情况下实现相同的结果,例如diff_keys吗?
为什么要diff_dict.keys显示字典.名称?难道我做错了什么?
另外,如何在没有字符串引号(')的情况下打印键或其他元素(如列表,元组等)?
与上面的#3相同但括号([])
谢谢和cheerio :-)
我想将 N 个字符串加入新字符串。每个项目一行:
my_list=['one', 'two', 'three']
lines='\n'.join(my_list)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我需要在每行末尾添加一个尾随换行符 lines. 在上述解决方案中,最后一行缺少换行符。
我搜索了一个简单且新手友好的解决方案。
...我使用 Python 2.7
下面是一个简单的 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中处理有理数的问题,它有一个简化它的方法.例如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) 在我的代码中的某个时刻,我有一个元组列表,我需要传递为一个字符串,但是一个包含元组结构元素的字符串,即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 的初学者,不了解以下内容:我定义了一个类和一个列表。当我想在附加后打印列表时,我没有得到字符串,尽管我有一个方法应该返回一个字符串,对吗?我不明白这里有什么问题.. :/ 我希望结果是 [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) 我正在尝试创建一个递归创建迷宫函数,但是,我被卡住了,因为我不知道如何递归调用它并放置墙壁。
有人可以告诉我如何编辑我的代码以使其正常工作吗?谢谢
编辑:由于我没有添加我的迷宫类,我想我会添加它来帮助查看整个代码。
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) 我有一个列表,其中包含一个类的简单对象,比如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方法来实现这个理想的新列表?
>>> 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)
使用打印时的原始产量不同输出
我有兴趣做类似于Django对列表所做的事情,例如:
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 2.7.11.我是做这是在那里给出的例子,但在弄糊涂了print,并r进行了介绍.我对如何将反斜杠显示为输出感到困惑.这与字符转义相关,但到目前为止我只是用于\b退格,\n新行,\\反斜杠
这就是我所说的:
有四种不同的情况:
既不使用print也不使用r
使用print但不是r
使用r但不是print
使用print和r
并且他们都提供不同的输出.我无法理解四种情况下实际发生的事情.
#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 ×12
python-2.7 ×4
python-3.x ×2
string ×2
dictionary ×1
inheritance ×1
key ×1
overriding ×1
printing ×1
tuples ×1