救急
编写程序,要求使用ASCII码转换字符串大小写,对输入的字符参数进行大小写转换,即输入小写内容,输出大写;输入大写则输出小写内容;其他字符不变;针对大小写的转换,可以考虑使用对应ASCII码进行切换,其中a-z为数字97-122,A-Z为数字65-90,大小写字母之间的编号相差32
思路:确认对应ASCII码是否在对应范围内,然后进行操作
知识点:类型转换
ord():将字符转化成整数值,参数是长度为1的字符串,简称字符。当参数为8比特的字符串时,返回该字节的值。例如,ord(‘a’)返回整形数值97。
chr():将整数(0-255)转换成一个字符,字符的ascii码等于参数中的整形数值。例如chr(97)返回字符’a’,该方法是ord()的反方法。
备注,函数swapcase()方法也可以用于对字符串的大小写字母进行转换。
import sys
msg="qingQIAO_HighSchool"
def my_function(i):
for apple in msg:
if 97 <= i <= 122: # 对小写字母数值判断
upper_num = i - 32 # 转换得到大写字母数值
print(chr(upper_num),end="") # 通过数值返回大写字母并打印
elif 65<= i <=90 : # 对大写字母数值判断,转换成小写字母
upper_num = i + 32
print(chr(upper_numer),end="")
else:
print(i,end="") # 其他字符不变直接打印
print("转换后的字符串为:",end="")
my_function(i) 本帖最后由 元豪 于 2023-6-2 16:36 编辑
你的代码有一些错误。可以将代码改成以下形式:
msg = "qingQIAO_HighSchool"
def my_function(msg):
result = ""
for char in msg:
if 97 <= ord(char) <= 122:# 对小写字母进行判断
upper_char = chr(ord(char) - 32) # 转换成大写字母并保存
result += upper_char
elif 65 <= ord(char) <= 90: # 对大写字母进行判断
lower_char = chr(ord(char) + 32) # 转换成小写字母并保存
result += lower_char
else:
result += char # 其他字符不变
return result
print("转换后的字符串为:", my_function(msg))
这里使用 ord() 函数将字符转换为其对应的 ASCII 码,然后根据大小写字母的范围进行判断,并使用 chr() 函数将 ASCII 码转换为字符。由于字符串是不可变类型,所以需要将每个替换后的字符保存到一个新的字符串中。最后得到的字符串就是转换后的结果。
输入 qingQIAO_HighSchool,输出 QINGqiao_hIGHSCHOOL。 你的程序有几个地方需要修改:
1. 函数my_function(i)应接受一个字符串作为输入参数,而不是单个字符。你的目标是遍历整个字符串,然后对每个字符进行大小写转换。
2.my_function应在循环中调用ord()函数来获取每个字符的 ASCII 值。
3. 错误地写出了变量名upper_numer ,应改为upper_num 。
4. 最后一个 else 分支中,应该打印字符,而不是 ASCII 码。
根据这些修正,你的代码可以改为:
msg="qingQIAO_HighSchool"
def my_function(msg):
for char in msg:
i = ord(char)
if 97 <= i <= 122: # 对小写字母数值判断
upper_num = i - 32 # 转换得到大写字母数值
print(chr(upper_num),end="") # 通过数值返回大写字母并打印
elif 65<= i <=90 : # 对大写字母数值判断,转换成小写字母
lower_num = i + 32
print(chr(lower_num),end="")
else:
print(char,end="") # 其他字符不变直接打印
print("转换后的字符串为:",end="")
my_function(msg)
这个代码将会遍历输入字符串的每个字符,并进行大小写转换。如果字符不是字母,则保持不变。 本帖最后由 sfqxx 于 2023-5-30 21:03 编辑
首先,在代码中需要用到msg变量,但该变量并未在代码中定义,因此需要先将msg变量定义为字符串类型,例如:
msg = "qingQIAO_HighSchool"
然后,需要从输入的字符参数中提取并判断每个字符的ASCII码数值是否在小写字母或大写字母的范围内,再根据需要转换成相应的大小写字母。可以用for循环对每个字符进行遍历并操作。
具体代码实现如下:
def my_function(msg):
new_msg = ""
for c in msg:
# 对小写字母做处理
if c >= 'a' and c <= 'z':
new_msg += chr(ord(c) - 32)
# 对大写字母做处理
elif c >= 'A' and c <= 'Z':
new_msg += chr(ord(c) + 32)
# 其他字符不变
else:
new_msg += c
return new_msg
msg = "qingQIAO_HighSchool"
new_msg = my_function(msg)
print("转换后的字符串为:", new_msg)
输出结果为:
转换后的字符串为: QINGqiao_hIGHSCHOOL
如果要使用Python内置的`swapcase()`方法来实现大小写转换,则只需一行代码实现:
msg = "qingQIAO_HighSchool"
new_msg = msg.swapcase()
print("转换后的字符串为:", new_msg)
输出结果为:
转换后的字符串为: QINGqiao_hIGHSCHOOL
求最佳答案
元豪 发表于 2023-5-30 20:29
抱歉,你的代码有一些错误。可以将代码改成以下形式:
不是抵制gpt吗 好复杂
本帖最后由 zhangjinxuan 于 2023-6-1 19:38 编辑
元豪 发表于 2023-5-30 20:29
抱歉,你的代码有一些错误。可以将代码改成以下形式:
{:10_256:}
页:
[1]