将字符串处理为大写一半和小写一半

时间:2019-04-02 20:09:58

标签: python

我遇到以下家庭作业问题: 编写一个从字符串用户那里挑选的程序。 当字符串前半部分的字母为小写字母,而字符串后半部分的字母为大写字母时,程序将打印该字符串。 如果字符串的长度为奇数,则前半部分将小于第二部分的一半。

其他说明: 不要使用循环或条件。 使用切片动作。 假设字符串的长度大于2。

我用完以下代码:

#Input of the text
fullClintStr = input("please enter text: ")
#New str of all the current str just in lower case
lowerCaseStr = fullClintStr.lower()
#New str of all the current str just in upper case
upperCaseStr = fullClintStr.upper();
#Slice from the start to the middle (if str length is odd then it will be included in the first half)
lowerCaseStr = lowerCaseStr[0 : (len(fullClintStr) / 2 + len(fullClintStr) % 2)]
#Slice from middle to the end
upperCaseStr = lowerCaseStr[(len(fullClintStr) / 2 - len(fullClintStr) % 2) : len(fullClintStr)]
#Combine both string to new string that itrs firs half is lower case and the #other is upper case
combinedResultStr = lowerCaseStr + "" + uupperCaseStr
#Print he results
print(combinedResultStr)

但遇到类型错误:“切片索引必须为整数或无,或具有 index 方法”

我想知道怎么做。 非常感谢你!

3 个答案:

答案 0 :(得分:2)

此代码将满足您的需求。希望对您有所帮助:

fullClintStr = input("please enter text: ")
strlen = len(fullClintStr)
lowerCaseStr = fullClintStr.lower()
upperCaseStr = fullClintStr.upper()
cutlen = strlen - (strlen//2)
printStr = lowerCaseStr[:cutlen] + upperCaseStr[cutlen:]
print(printStr)

答案 1 :(得分:0)

#!/usr/bin/env bash # Initialize variables wait_sec=15 browser_url="http://localhost:9876/debug.html" npm_pid="" function start_npm_command() { npm karma start --no-single-run --auto-watch & npm_pid=$! } function open_browser() { echo "Opening browser after waiting for ${wait_sec} seconds" sleep "${wait_sec}" open "${browser_url}" echo -e "\n\n Press 'Ctrl+C' to exit" } function handle_exit() { echo "Execute cleanup.." if [[ -n "${npm_pid}" ]]; then echo "Killing npm pid" kill -s SIGKILL "${npm_pid}" else echo "Do nothing" fi } function main() { start_npm_command open_browser } trap handle_exit SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM main 是一个字符串,因此,如果您尝试使用索引号访问子字符串,那么您要查找的是fullClintStr

答案 2 :(得分:0)

您的主要问题是您试图使用查找列表的中间点,但实际上并没有获取字符串的长度。考虑下面的脚本:

fullClintStr = input("please enter text: ")
list_string = []

for index, element in enumerate(fullClintStr):
    if len(fullClintStr) % 2 == 0:
        if index < len(fullClintStr)/2:
            list_string.append(element.upper())
        else:
            list_string.append(element.lower())
    else:
        if index < (len(fullClintStr)/2) - 1:
            list_string.append(element.upper())
        else:
            list_string.append(element.lower())

input_string = ''.join(list_string)
print(input_string)

通过使用len命令包装字符串,我们可以看到脚本的长度。就像您在问题中所说的那样,您不能使用if语句循环来解决问题,但这应该使您对应该如何找到中间点有所了解。