字符串向后另一种方式

时间:2018-02-12 12:35:47

标签: python

我是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”?

1 个答案:

答案 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仍然是切片的长度。