我是一个使用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) 我的任务有问题.转让的问题如下:
编写一个名为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)