我是Python的新手,我遇到了一个我无法理解的问题。假设我有字符串变量:
#!/bin/sh
get_user_name() {
local varname
printf 'Hello, who am I talking to? '
read varname
if test "$varname" = skull; then
echo "Nice to meet you $varname"
User_name=$varname
return 0
else
echo "I dont know you $varname" >&2
return 1
fi
}
unset User_name
while ! get_user_name
do
case "$User_name" in
skull) break
;;
esac
done
echo "Users_name_is - $User_name"
我想向后显示它,没问题:
myVar = "abcdefgh"
我得到了hgfedcba。这里没什么好惊讶的。我应该用这个有点冗长的代码得到同样的结果:
print(myVar[::-1])
但这次结果是hgfedcb。然后我试着不从len(myVar)中减去1,结果完全一样。我不明白为什么,特别是那条线:
print(myVar[len(myVar)-1:0:-1])
显示相同的结果。
所以,我的问题是为什么print(myVar [len(myVar):0:-1])不显示“a”?
答案 0 :(得分:0)
print(myVar[::-1])
的详细等价词是:
print(myVar[-1:-1-len(myVar):-1])
# Or
# print(myVar[len(myVar)-1:-1-len(myVar):-1])
# but this makes the the length invariant less obvious
请注意,stop
参数是独占的,为了到达实际 -1
,您必须另外减去全长,因为负索引从结束序列。另请注意(stop-start)*step
仍然是切片的长度。