您好(这是我在网站上的第一个问题,如果我没有遵守规则,我们深表歉意。)下面是我编写的两个代码(使用for循环),以打印用户输入的字符串的反序。一种代码给我一个错误,而另一种则正常。我不明白为什么。为什么函数“范围”似乎有所不同?感谢有人可以帮助我理解逻辑-非常感谢
代码1:这给了我错误:
string = input('Enter a Word ')
length = len(string)
reverse = []
for i in string:
x=string [-1-i]
reverse.append(x)
print (reverse)
*输入Word Python
TypeError追溯(最近一次通话)在45为我的字符串:----> 6 x =字符串[-1-i]7反向附加(x)8TypeError:-:“ int”和“ str”
不支持的操作数类型代码2:可以正常工作
string = input('Enter a Word ')
length = len (string)
reverse = []
for i in range(length):
x=string [-1-i]
reverse.append(x)
print (reverse)
*输入Word Python
['n','o','h','t','y','P'] *
[使用for i in string
,i
将采用字符串中每个字符的值,例如如果输入为“ Hello”,则为'H'
,'e'
,'l'
,'l'
,'o'
。
[当您调用string[-1-i]
时,Python试图从数字中减去一个字符串,这就是为什么会出现错误unsupported operand type(s) for -: 'int' and 'str'
。
您正在执行的第一个循环是为您的字符串创建一个foreach循环,因此您的“ i”基本上是一个字符。您知道还有一个名为“ reverse()”的功能吗?
您可以轻松进行reverse
功能-
def reverse(word = ""):
return word if len(word) < 2 else reverse(word[1::]) + word[0]
myword = "bookkeepper"
print(myword+reverse(myword))
# bookkeepperreppeekkoob