鱼C论坛

 找回密码
 立即注册
查看: 1946|回复: 6

[已解决]救急

[复制链接]
发表于 2023-5-30 20:24:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
编写程序,要求使用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="")       # 其他字符不变直接打印
&#8203;
            
&#8203;
print("转换后的字符串为:",end="")
&#8203;
my_function(i)
最佳答案
2023-5-30 21:02:00
本帖最后由 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

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-30 20:29:28 | 显示全部楼层
本帖最后由 元豪 于 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。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-30 20:33:40 | 显示全部楼层
你的程序有几个地方需要修改:

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)
这个代码将会遍历输入字符串的每个字符,并进行大小写转换。如果字符不是字母,则保持不变。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-30 21:02:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-31 00:09:24 | 显示全部楼层
元豪 发表于 2023-5-30 20:29
抱歉,你的代码有一些错误。可以将代码改成以下形式:

不是抵制gpt吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-31 16:27:06 | 显示全部楼层
好复杂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-1 19:31:35 | 显示全部楼层
本帖最后由 zhangjinxuan 于 2023-6-1 19:38 编辑
元豪 发表于 2023-5-30 20:29
抱歉,你的代码有一些错误。可以将代码改成以下形式:


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表