我遇到以下家庭作业问题: 编写一个从字符串用户那里挑选的程序。 当字符串前半部分的字母为小写字母,而字符串后半部分的字母为大写字母时,程序将打印该字符串。 如果字符串的长度为奇数,则前半部分将小于第二部分的一半。
其他说明: 不要使用循环或条件。 使用切片动作。 假设字符串的长度大于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 方法”
我想知道怎么做。 非常感谢你!
答案 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语句循环来解决问题,但这应该使您对应该如何找到中间点有所了解。