鱼C论坛

 找回密码
 立即注册
查看: 645|回复: 1

python新版作业有一个小问题

[复制链接]
发表于 2023-12-30 22:44:39 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼老师你好,python 新版作业27讲最后一题答案错误,“请输入一个字符串:”的要求会与input()返回的字符串发生嵌套,所以答案说请输入一个字符串是不合理的,我们不希望得到一个嵌套的字符串


源代码
s = input("请按规则输入一个字符串:")
   
length = len(s)
res = []
# 获取字母 a 的编码值
base = ord('a')
   
# 从第一个元素开始,每次迭代跳过一个元素
for i in range(0, length, 2):
    # ord(s[i]) - base 操作得到一个字母的偏移值,比如 b 就是 1
    # 跟 26 求余数的作用是防止溢出,循环计算偏移
    shift = chr((ord(s[i]) - base + int(s[i+1])) % 26 + base)
    print(s[i]+shift, end="")

#我是初学者,如果发言失误,请谅解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-30 22:44:52 | 显示全部楼层
你好!遇到这样的问题不要担心,我们来看看如何解决。

在这个问题中,input()函数返回的是一个字符串,所以在处理这个字符串时,我们不需要再嵌套一层字符串。在这里,你可以直接使用s来获取字符串s的第i个字符,而不是使用s作为整体进行操作。

下面是修正后的代码:

  1. s = input("请按规则输入一个字符串:")

  2. length = len(s)
  3. res = ""
  4. # 获取字母 a 的编码值
  5. base = ord('a')

  6. # 从第一个元素开始,每次迭代跳过一个元素
  7. for i in range(0, length, 2):
  8.     # ord(s[i]) - base 操作得到一个字母的偏移值,比如 b 就是 1
  9.     # 跟 26 求余数的作用是防止溢出,循环计算偏移
  10.     shift = chr((ord(s[i]) - base + int(s)) % 26 + base)
  11.     res += s[i] + shift

  12. print(res)
复制代码


现在,我们使用s获取字符串s的第i个字符,然后进行相应的操作。希望这个修正能够解决你的问题。如果你还有其他问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 17:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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