小编ahm*_*ikh的帖子

python 3.2中KeyError的语法错误

我是一个使用python 3.2的初学者,我有一本书,其代码全部都在python 2.6中.我写了一个程序的一部分,并继续得到:语法错误:语法无效然后python的IDLE突出显示我的代码中的KeyError之后的逗号:

from tank import Tank

tanks = { "a":Tank("Alice"), "b":Tank("Bob"), "c":Tank("Carol")}
alive_tanks = len(tanks)

while alive_tanks > 1:
    print
    for tank_name in sorted( tanks.keys() ):
        print (tank_name, tanks[tank_name])

    first = raw_input("Who fires? ").lower()
    second = raw_input("Who at? ").lower()

    try:
        first_tank = tanks[first]
        second_tank = tanks[second]
    except KeyError, name:
        print ("No such tank exists!", name)
        continue
Run Code Online (Sandbox Code Playgroud)

python syntax python-3.x

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

std :: string在不应该传递std :: is_fundamental检查时 - 模板元编程

我的任务有问题.转让的问题如下:

编写一个名为Interpolate的函数模板,它将使下面的工作成为可能.当格式字符串中遇到相应的%时,将输出每个参数.所有输出应该最终使用适当的重载<<运算符完成.\%序列应输出百分号.

    SomeArbitraryClass obj;
    int i = 1234;
    double x = 3.14;
    std::string str("foo");
    std::cout << Interpolate(R"(i=%, x1=%, x2=%\%, str1=%, str2=%, obj=%)", i, x, 1.001, str,  "hello", obj) << std::endl;
Run Code Online (Sandbox Code Playgroud)

如果百分号的数量与输出的参数数量不匹配,则抛出类型为cs540 :: WrongNumberOfArgs的异常.

现在,我已经开始编写代码以使其工作.但是,我遇到了使用非POD的问题.这是我到目前为止所写的内容:

#include <iostream>
#include <sstream>
#include <string>
#include <type_traits>

std::string Interpolate(std::string raw_string) {
    std::size_t found = raw_string.find_first_of("%");
    if(found != std::string::npos && raw_string[found-1] != '\\') {
        std::cout << "Throw cs540::ArgsMismatchException" << std::endl;
    }
    return raw_string;
}


template <typename T, typename ...Args>
std::string Interpolate(std::string raw_string, T arg_head, Args... arg_tail) …
Run Code Online (Sandbox Code Playgroud)

c++ templates type-traits template-meta-programming c++11

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