造梦师pot 发表于 2023-5-30 20:24:46

救急

编写程序,要求使用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-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。

isdkz 发表于 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)

这个代码将会遍历输入字符串的每个字符,并进行大小写转换。如果字符不是字母,则保持不变。

sfqxx 发表于 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

求最佳答案

歌者文明清理员 发表于 2023-5-31 00:09:24

元豪 发表于 2023-5-30 20:29
抱歉,你的代码有一些错误。可以将代码改成以下形式:




不是抵制gpt吗

xxzx 发表于 2023-5-31 16:27:06

好复杂

zhangjinxuan 发表于 2023-6-1 19:31:35

本帖最后由 zhangjinxuan 于 2023-6-1 19:38 编辑

元豪 发表于 2023-5-30 20:29
抱歉,你的代码有一些错误。可以将代码改成以下形式:




{:10_256:}
页: [1]
查看完整版本: 救急