我有一个像这样的Python代码,
var start = new Date(2013, 2, 13, 22, 0, 0);
var end = new Date(2013, 2, 13, 23, 0, 0);
while (start < end) {
var newDate = start.setMinutes(start.getMinutes() + 5);
start = new Date(newDate);
db.getCollection("_User").find().forEach(function (myDoc) {
var a = db.Data.find({user: myDoc.username, "_created_at": {$lt: start}}).sort({" _created_at": -1}).limit(1);
if (a.length() > 0) {
print(a[0]["battery"])
}
});
print(start)
}
变量“new_word”的输出应为“ythonpay”,但现在new_word包含“pythonpay”。谁能让我知道我在这里做的错误是什么。
答案 0 :(得分:0)
你说new_word[1:]
但你没有做任何事情。将其更改为new_word = new_word[1:]
。 Slicing使用您决定的任何项目创建列表的副本。在您的情况下,它会创建除第一个项目之外的所有项目的列表。但是,它不会更改原始列表,因此您需要为其分配new_word
。
答案 1 :(得分:0)
您没有将切片new_word[1:]
的结果分配给任何内容。您可以在前一行上进行切片,例如:
new_word = word[1:]+first+pyg
你使用的是什么版本的python,Python3引入了一种新的解包语法,这使得这很容易:
first, *word = original.lower()
new_word = word+first+pyg
无需切片,因为*
赋值已将字符串分开。
答案 2 :(得分:0)
问题在于索引和正在打印的内容。
在你的代码中new_word = word+first+pyg
返回原始单词本身作为第一部分,你需要它包含除第一个字母之外的所有字符串。您可以通过使用word[1:]
来实现,即在字符串的第一个(或第0个)索引之后的所有字符。
pyg = 'ay'
original = raw_input('Enter a word:')
if len(original) > 0 and original.isalpha():
word = original.lower()
first = word[0]
# Here we take all the letters after the first letter.
rest = word[1:]
new_word = rest + first + pyg
print new_word
else:
print 'empty'
以上将输出&#34; ythonpay&#34;对于python。