初学者问题;字符串索引超出范围
Beginner Issue; string index out of range
# word reverser
#user input word is printed backwards
word = input("please type a word")
#letters are to be added to "reverse" creating a new string each time
reverse = ""
#the index of the letter of the final letter of "word" the users' input
#use this to "steal" a letter each time
#index is the length of the word - 1 to give a valid index number
index = len(word) - 1
#steals a letter until word is empty, adding each letter to "reverse" each time (in reverse)
while word:
reverse += word[index]
word = word[:index]
print(reverse)
print(reverse)
input("press enter to exit")
正在努力制作一个简单的程序,将用户输入的单词倒着拼写,然后通过 "stealing" 个原始字母将其打印回给他们,并从中生成新的字符串。
我遇到的问题是这段代码在
反向 += 单词[索引]
帮助或实现相同结果的更好方法是 mucho apreciado。
反转 python 中的单词比
更简单
reversed = forward[::-1]
我不会使用循环,它更长而且可读性更差。
您将要使用 "range" 功能。
range(start, stop, step)
Returns一个列表从开始到停止逐步递增(或递减)。然后你可以遍历列表。总之,它看起来像这样:
for i in range(len(word) -1, -1, -1):
reverse += word[i]
print(reverse)
或者更简单的方法是使用 string slicing 直接反转单词然后遍历它。像这样:
for letter in word[::-1]:
reverse += letter
print(reverse)
按照现在的写法,不仅会把单词倒着打印,还会把单词的每一部分都倒着打印。例如,如果用户输入 "Hello" 它将打印
o
ol
oll
olle
olleH
如果只是想把单词倒着打印,最好的办法就是
print(word[::-1])
这是因为您没有更改 index
的值
修改:
while word:
reverse += word[index]
word = word[:index]
index-=1
print(reverse)`
也就是说,每次循环获取 word
的当前最后一个字母时,都必须减少索引
虽然其他人在 Python 中指出了多种反转单词的方法,但我认为这是您的代码存在的问题。
index
始终保持不变。假设用户输入了一个四个字母的单词,比如 abcd
。索引将设置为三 (index = len(word) - 1
)。然后在循环的第一次迭代期间,word
将减少为 abc
(word = word[:index]
)。然后,在循环的下一次迭代中,在循环的第一行 (reverse += word[index]
) 中,您将收到错误。 index
仍然是三个,因此您尝试访问 index[3]
。但是,由于 word
已被缩短,因此不再有 index[3]
。您需要每次迭代将 index
减一:
while word:
reverse += word[index]
word = word[:index]
index -= 1
还有另一种在 Python 中反转单词的方法(不过 Wills 代码是最简洁的):
reverse = "".join([word[i-1] for i in range(len(word), 0, -1)])
编码愉快!
# word reverser
#user input word is printed backwards
word = input("please type a word")
#letters are to be added to "reverse" creating a new string each time
reverse = ""
#the index of the letter of the final letter of "word" the users' input
#use this to "steal" a letter each time
#index is the length of the word - 1 to give a valid index number
index = len(word) - 1
#steals a letter until word is empty, adding each letter to "reverse" each time (in reverse)
while word:
reverse += word[index]
word = word[:index]
print(reverse)
print(reverse)
input("press enter to exit")
正在努力制作一个简单的程序,将用户输入的单词倒着拼写,然后通过 "stealing" 个原始字母将其打印回给他们,并从中生成新的字符串。 我遇到的问题是这段代码在 反向 += 单词[索引] 帮助或实现相同结果的更好方法是 mucho apreciado。
反转 python 中的单词比
更简单reversed = forward[::-1]
我不会使用循环,它更长而且可读性更差。
您将要使用 "range" 功能。
range(start, stop, step)
Returns一个列表从开始到停止逐步递增(或递减)。然后你可以遍历列表。总之,它看起来像这样:
for i in range(len(word) -1, -1, -1):
reverse += word[i]
print(reverse)
或者更简单的方法是使用 string slicing 直接反转单词然后遍历它。像这样:
for letter in word[::-1]:
reverse += letter
print(reverse)
按照现在的写法,不仅会把单词倒着打印,还会把单词的每一部分都倒着打印。例如,如果用户输入 "Hello" 它将打印
o
ol
oll
olle
olleH
如果只是想把单词倒着打印,最好的办法就是
print(word[::-1])
这是因为您没有更改 index
修改:
while word:
reverse += word[index]
word = word[:index]
index-=1
print(reverse)`
也就是说,每次循环获取 word
虽然其他人在 Python 中指出了多种反转单词的方法,但我认为这是您的代码存在的问题。
index
始终保持不变。假设用户输入了一个四个字母的单词,比如 abcd
。索引将设置为三 (index = len(word) - 1
)。然后在循环的第一次迭代期间,word
将减少为 abc
(word = word[:index]
)。然后,在循环的下一次迭代中,在循环的第一行 (reverse += word[index]
) 中,您将收到错误。 index
仍然是三个,因此您尝试访问 index[3]
。但是,由于 word
已被缩短,因此不再有 index[3]
。您需要每次迭代将 index
减一:
while word:
reverse += word[index]
word = word[:index]
index -= 1
还有另一种在 Python 中反转单词的方法(不过 Wills 代码是最简洁的):
reverse = "".join([word[i-1] for i in range(len(word), 0, -1)])
编码愉快!