小编Oli*_*çon的帖子

PyCharm 中 __new__ 的调用参数不正确

class IntTuple(tuple):
    def __new__(cls, iterable):
        generator = (x for x in iterable if isinstance(x, int) and x > 0)
        return super().__new__(cls, generator)
Run Code Online (Sandbox Code Playgroud)

Pycharm建议我删除generator这是在return。为什么?

它说: 该检查报告声明的参数和实际参数之间存在差异,以及不正确的参数(例如重复命名参数)和不正确的参数顺序。装饰器也被分析。

但它的输出是我所期望的。

例子:

t = IntTuple([1, -1, "abc", 2, [1, 2], 3])

print(t)
Run Code Online (Sandbox Code Playgroud)
output: (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

我是 Python 新手,所以我认为这可能缺乏标准化。

我应该如何改进它?

python pycharm

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

使用正则表达式匹配不以某个字母开头的单词

我正在学习正则表达式,但无法在python中找到正确的正则表达式来选择以特定字母开头的字符。

下面的例子

text='this is a test'
match=re.findall('(?!t)\w*',text)

# match returns
['his', '', 'is', '', 'a', '', 'est', '']

match=re.findall('[^t]\w+',text)

# match
['his', ' is', ' a', ' test']
Run Code Online (Sandbox Code Playgroud)

预期: ['is','a']

python regex regex-negation regex-lookarounds

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

更改计算器仅在需要一种类型的硬币时才有效

我目前正在尝试学习python并且已经在/ r/learnpython上进行了初学者项目.我对更改计算器项目的想法是创建一个包含键'quarter','dime','nickel'和'penny'的字典,每个字符的值都初始化为0.我的代码,如下所示,似乎只在改变我输入只需要一种类型的硬币,即0.75 - > 3季度,0.1 - > 1角钱等.

 change_map = {
    'quarter' : 0,
    'dime' : 0,
    'nickel' : 0,
    'penny' : 0
}

def calculator(change):
    while change > 0:
        if change >= 0.25:
            change -= 0.25
            change_map['quarter'] += 1
        elif change < 0.25 and change >= 0.10:
            change -= 0.10
            change_map['dime'] += 1
        elif change < 0.10 and change >= 0.05:
            change -= 0.05
            change_map['nickel'] += 1
        elif change < 0.05 and change >= 0.01:
            change -= 0.01
            change_map['penny'] …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

如何使for循环中的if只运行一次?

我试图根据条件将两个列表中的项目放在一起,以创建第三个列表作为输出。即使我是新手,这也相对简单。但是,我试图让循环的一部分只运行一次,而这正是我挣扎的地方。有没有办法做到这一点?

数据来自文本数据的大型 DataFrame。但是我创建了这个问题的简化版本,以尝试更轻松地解决它(没有运气):

a = [1, 2, 3, 4, 5]
A = [4, 5]

b = []
for i in a:
    if i in A:
        b.append(3.5) # My aim is to make this line run only once
        b.append(i)
    else:
        b.append(i)
print(b)
Run Code Online (Sandbox Code Playgroud)

这给出:

[1, 2, 3, 3.5, 4, 3.5, 5]
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到以下结果?

[1, 2, 3, 3.5, 4, 5]
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

如何使用新格式打印大括号

我试图让python输出一些我可以复制并过去的乳胶文档.我需要输出看起来像这样:

q_ {00} q_ {01}

等,我在这里使用这个代码,但是,有没有办法让大括号打印,格式化的数字和另一个大括号,而不添加空格或空格?

for rows in range(nst):
    print("q_{{0:0=2d}}".format(rows))
Run Code Online (Sandbox Code Playgroud)

只是屈服 q_{0:0=2d}

python python-3.x output

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

Python:识别和删除列表中的重复序列

我正在寻找在列表中查找重复序列的最佳方法.序列被定义为至少两个相邻值.

示例:在以下列表中,应标识并删除重复序列.

a = [45874,
    35195, # <-
    28965,
    05867,
    25847, # <-
    94937,
    64894,
    55535,
    62899,
    00391,
    35195, # Duplicate Sequence Start
    28965,
    05867,
    25847, # Duplicate Sequence End
    08483,
    55801,
    33129,
    42616]
Run Code Online (Sandbox Code Playgroud)

我无法解决任何问题,所以任何帮助都非常感谢!

python sequences list subsequence

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

超级简化字符串 python

我一直对这个简单的黑客问题有疑问。我的代码可以在编译器中运行,但 hackerrank 测试有 6 个测试用例失败。我的输出之一是正确的(我没有支付溢价)。这里有什么问题吗?

\n\n

提示: \nSteve 在 ascii[\xe2\x80\x98a\xe2\x80\x99..\xe2\x80\x99z\xe2\x80\x99] 范围内有一串小写字符。他希望通过执行一系列操作将字符串减少到最短长度,在这些操作中,他选择一对匹配的相邻小写字母,然后删除它们。例如,字符串 aab 可以通过一次操作缩短为 b。

\n\n

Steve\xe2\x80\x99s 的任务是使用此方法删除尽可能多的字符并打印结果字符串。如果最终字符串为空,则打印Empty String

\n\n

前任。

\n\n

aaabccddd \xe2\x86\x92 abccddd \xe2\x86\x92 abddd \xe2\x86\x92 abd

\n\n

baab \xe2\x86\x92 bb \xe2\x86\x92 空字符串

\n\n

这是我的代码:

\n\n
def super_reduced_string(s):\n    count_dict = {}\n    for i in s:\n        if (i in count_dict.keys()):\n            count_dict[i] += 1 \n        else:\n            count_dict[i] = 1 \n\n    new_string = ''\n    for char in count_dict.keys():\n        if (count_dict[char] % 2 == 1):\n            new_string += char\n\n    if (new_string is ''):\n …
Run Code Online (Sandbox Code Playgroud)

python string

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

TypeError:调用logging.INFO时,“int”对象在Python 3中不可调用

在使用适当的参数将对象传递给我的类后,我收到TypeError: 'int' object is not callable 。

这是日志记录或类的问题吗?谁能帮我这个?

以下是片段:

import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s-%(message)s')

class employee:

    def __init__(self,first,last):
        self.first=first
        self.last=last

        logging.INFO('Employee created: {} - {} '.format(self.fullname, self.email))

    @property
    def email(self):
        return '{}.{}@email.com'.format(self.first,self.last)
    @property
    def fullname(self):
        return '{} {}'.format(self.first,self.last)

emp_1=employee('John','Doe')
emp_2=employee('John','Smith')
Run Code Online (Sandbox Code Playgroud)

python logging typeerror python-3.x

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

PyCharm 无法访问 /usr/lib/ 和 /usr/bin/ 中的文件

我在 Pop_OS 下使用PyCharm 2020.2.3Python 3.8.6!20.10(您可能可以像我使用Ubuntu 20.10一样),它无法在/usr/bin或中查看文件/usr/lib

这是我尝试触摸二进制文件的示例/usr/lib/firefox/firefox

# main.py
import os
print(os.path.exists('/usr/lib'))
print(os.path.exists('/usr/lib/firefox'))
print(open('/usr/lib/firefox/firefox', 'r'))
Run Code Online (Sandbox Code Playgroud)

从命令行,这是有效的:

>>> python main.py
True
True
<_io.TextIOWrapper name='/usr/lib/firefox/firefox' mode='r' encoding='UTF-8'>
Run Code Online (Sandbox Code Playgroud)

但是当我在 PyCharm 中运行它时,它失败了,如下所示:

True         # Can see /usr/lib
False        # Cannot see /usr/lib/firefox
Traceback (most recent call last):
  File ..., line 5, in <module>
    print(open('/usr/lib/firefox/firefox', 'r'))
FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/firefox/firefox'
Run Code Online (Sandbox Code Playgroud)

以下是以下权限usr/bin/firefox

>>> ls -ld firefox
drwxr-xr-x …
Run Code Online (Sandbox Code Playgroud)

python permissions pycharm python-3.x python-os

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

圆函数不圆整?

我正在尝试创建一个基本的平均函数,允许用户输入整数列表并返回数据集的平均值.其中一个警告是该程序应该允许用户选择他们希望答案四舍五入到的小数.

下面的代码片段是我的mean()函数中的内容,它将一个数字列表作为参数.

例如,如果我输入[5,3,3,2]并想要舍入到2位小数(应为3.25),则程序返回3.0.

sum = 0
for item in lst:
    sum += item

mean = round(float(sum / len(lst)), decimals)

print mean
Run Code Online (Sandbox Code Playgroud)

python python-2.x

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