小编Rya*_*ing的帖子

AttributeError:'tuple'对象没有带有input()结果的属性'split'?

(这是家庭作业)这就是我所拥有的:

L1 = list(map(int, input().split(",")))
Run Code Online (Sandbox Code Playgroud)

我遇到了

  File "lab3.py", line 23, in <module>
    L1 = list(map(int, input().split(",")))
AttributeError: 'tuple' object has no attribute 'split'
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个错误?

1, 2, 3, 4用作输入

python python-2.7

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

我可以有一个 main() Click 函数来调用所有其他子命令吗?

我有一个像这样的脚本:

#myscript.py
import click

def step1(arg1):
    print('Step 1: ' + arg1)

def step2(arg2):
    print('Step 2: ' + arg2)

def main(arg1, arg2):
    step1(arg1)
    step2(arg2)
Run Code Online (Sandbox Code Playgroud)

大多数时候我想使用 运行脚本myscript arg1 arg2,但有时我可能只想运行一个步骤:例如myscript step1 arg1如何设置点击来执行此操作?有没有一种方法可以让一个默认命令和其他可选命令一起使用?

这似乎是Click 不鼓励的件事

有时,从一个命令调用另一个命令可能会很有趣。Click 通常不鼓励这种模式,但尽管如此,这种模式还是有可能的。

我需要使用这个click.invoke()模式吗?

python python-3.x python-click

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

在python中取消大写

我正在创建一个您与之对话的程序,然后给它一个命令,然后它就会运行。问题是当我运行该程序并对其进行对话时,它可能会大写一些我在代码中没有大写的字母,因此它不会运行该命令。有没有办法让python不用担心单词是否大写?我已经尝试过将名称大写,但它似乎在需要时将它们大写。代码:

import speech
words = {"test1", "hello"}
test = speech.input("test: ")
tokens = test.split()
if words.intersection(tokens):
    print 'hi'
else:
    print 'test'
Run Code Online (Sandbox Code Playgroud)

python capitalization

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

在for循环中声明两个不同的变量,其中一个是不可移动的,不可复制的对象

我知道在一个std::pair或一个匿名struct类型的for循环中声明和初始化两个不同的变量,但这些不适用于我的目的.

假设我有以下类定义

class Object {
    private:
        int i;
    public:
        Object(int i) : i(i) { }
        // everything else deleted
        Object() = delete;
        Object(const Object &) = delete;
        Object(Object &&) = delete;
        Object & operator=(const Object &) = delete;
        Object & operator=(Object &&) = delete;
};
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以初始化Objectintfor环线.我不想在for循环或类似的东西周围添加额外的块.我还好用std::tuple,std::pair匿名structs,不管,只是只要它的形式是

for(/* creates Object and int*/ ; /*whatever*/; /*whatever*/) { /* ... */}
Run Code Online (Sandbox Code Playgroud)

或(如果存在语法)

for( Object o(69), …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

模板化函数仅取rvalues

写一个只占左值的函数很容易

template <typename T>
void f(T&);
Run Code Online (Sandbox Code Playgroud)

但是由于通用引用,编写一个只接受rvalue引用的引用并不是直截了当的.有没有办法编写一个只接受rvalue refs的泛型函数?(返回类型不是真正的问题)

template <typename T>
void only_rvals(T&&);
Run Code Online (Sandbox Code Playgroud)

哪里

int i{};
only_rvals(i); // fails to compile
only_rvals(6); // successfully compiles
Run Code Online (Sandbox Code Playgroud)

c++ templates rvalue-reference c++11

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

我想在python youtube数据api中获取所有nextPageTokens

我想获取nextPageToken下面的youtube数据api是我的代码,我想获取所有nextpageTokens。在循环中,我想重新分配nextPageToken

def get_next_videos():                                                                                                                                        
  while True:                                                                                                                                                 
    r = requests.get("https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=50&channelId="+CHANNELID+"&order=date&key="+DEVELOPER_KEY)         
    json_data = r.json()                                                                                                                                      
    nextPageToken = json_data.get("nextPageToken")                                                                                                            

    second_r = requests.get("https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=50&channelId="+CHANNELID+"&order=date&key="+DEVELOPER_KEY+"\
&pageToken="+nextPageToken)                                                                                                                                   
    json_data = second_r.json()                                                                                                                               
    nextPageToken = json_data.get("nextPageToken")                                                                                                            

    third_r = requests.get("https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=50&channelId="+CHANNELID+"&order=date&key="+DEVELOPER_KEY+"&\
pageToken="+nextPageToken)                                                                                                                                    
    json_data = third_r.json()                                                                                                                                
    nextPageToken = json_data.get("nextPageToken")                                                                                                            

    fourth_r = requests.get("https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=50&channelId="+CHANNELID+"&order=date&key="+DEVELOPER_KEY+"\
&pageToken="+nextPageToken)                                                                                                                                   
    json_data = third_r.json()                                                                                                                                
    nextPageToken = json_data.get("nextPageToken") 
Run Code Online (Sandbox Code Playgroud)

python youtube logic

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

委托给另一个对象的operator->

在别名模板编写将演绎出某种类型的返回类型TS" operator->,到目前为止,我有这

template <typename T>
using arrow = decltype(std::declval<T&>().operator->());
Run Code Online (Sandbox Code Playgroud)

它适用于所有类类型,但不适用于指针.尝试实际调用时存在类似的问题->

template <typename T>
struct D {
    T t;
    arrow<T> f() { 
        // not valid to call .operator->() on pointers
        return t.operator->();
    }
};
Run Code Online (Sandbox Code Playgroud)

如何使这个函数获得声明的正确返回类型,并正确委托类类型和指针?

c++ templates c++11

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

'Popen'对象不可迭代

我试图通过subprocess命令将一些ID提取到列表中。下面是我的代码:

list1=[]
list2=[]
list1 = subprocess.Popen("pgrep -u root",stdout=subprocess.PIPE, shell = True)
for i in list1:
    file1 = open(os.path.join('/proc',i,'status')).readlines()
    for line in file1:
        if line.startswith("Mem: "):
             id = int(line.split()[5])
        if line.startswith("Cpu: "):
             toC = int(line.split()[8])
list2 = (id,toC)
for k in list2:
    self.text.insert(INSERT,k[0])
    self.text.insert(INSERT,k[1])
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:'Popen'对象不可迭代。我正在创建一个列表,并将ID提取到列表中,然后对于列表中的每个ID,我都试图获取mem和cpu信息。该信息再次输入到另一个空列表(list2)。我正在遍历list2以显示这些信息。我要去哪里错了?

python linux subprocess list python-3.x

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

更新gcc后bazel“未声明的包含”错误

从 gcc-7.1 更新到 gcc-7.2 后,我收到了很多关于未声明包含标准库头文件的错误。例如

$ bazel build //test:my_test
ERROR: /home/haining/my_project/BUILD:39:1: undeclared inclusion(s) in rule '//test:my_test':
this rule is missing dependency declarations for the following files included by 'test/test_range.cpp':
  '/home/haining/gcc-7.2/include/c++/7.2.0/cstddef'
  '/home/haining/gcc-7.2/include/c++/7.2.0/x86_64-pc-linux-gnu/bits/c++config.h'
  '/home/haining/gcc-7.2/include/c++/7.2.0/x86_64-pc-linux-gnu/bits/os_defines.h'
  '/home/haining/gcc-7.2/include/c++/7.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h'
  '/home/haining/gcc-7.2/lib/gcc/x86_64-pc-linux-gnu/7.2.0/include/stddef.h'
  '/home/haining/gcc-7.2/include/c++/7.2.0/functional'
  '/home/haining/gcc-7.2/include/c++/7.2.0/bits/stl_function.h'
  '/home/haining/gcc-7.2/include/c++/7.2.0/bits/move.h'
  '/home/haining/gcc-7.2/include/c++/7.2.0/bits/concept_check.h'
  '/home/haining/gcc-7.2/include/c++/7.2.0/type_traits'
  '/home/haining/gcc-7.2/include/c++/7.2.0/backward/binders.h'
  '/home/haining/gcc-7.2/include/c++/7.2.0/new'
  '/home/haining/gcc-7.2/include/c++/7.2.0/exception'
... etc ...
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题

c++ bazel

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

声明在较早的朋友定义中定义的友元函数

下面定义全局命名空间中的友元函数,声明与朋友相同的函数

class Cls {
    friend void func(int) { }
    friend void ::func(int);
};
Run Code Online (Sandbox Code Playgroud)

铛接受这一点,而GCC拒绝

so.cpp:3:17: error: ‘void func(int)’ has not been declared within ‘::’
     friend void ::func(int);
                 ^~
so.cpp:2:17: note: only here as a ‘friend’
     friend void func(int) { }
                 ^~~~
Run Code Online (Sandbox Code Playgroud)

这对我来说应该没问题,它在全局命名空间中定义一个函数不是吗?gcc错误很明显,不喜欢它only是朋友.谁是对的?

c++ c++17

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