HT_prandme 发表于 2026-3-1 21:16:18

零基础(最新版)课后作业第18讲动手做另解


零基础(最新版)课后作业第18讲动手做另解

(第0题)
for i in range(1,10):
    for j in range(10):
      for k in range(10):
            if i**3 + j**3 + k**3 == i*100 + j*10 + k:
                print(i*100 + j*10 + k)

ps:简单易懂,没啥技术含量,但当时只想到了这一种qwq


(第1题)
n = input('请输入一个整数:')
zishu = len(n)
print(zishu)#字符串长度
for i in range(zishu):
    if n != n :
      print(n,'不是是一个回文数')
      break
else:
    print(n,'是一个回文数')

(下面这题用的是小甲鱼课上一带而过的len(),还有[](没学到,不知道叫啥qwq),迁移运用摸索了一下,搞出来的,可以正常运行awa)

FishC 发表于 2026-3-1 21:17:08

(第0题)
for i in range(1,10):
    for j in range(10):
      for k in range(10):
            if i**3 + j**3 + k**3 == i*100 + j*10 + k:
                print(i*100 + j*10 + k)

ps:简单易懂,没啥技术含量,但当时只想到了这一种qwq

第0题代码正确,能够找出所有三位数的水仙花数(例如153、370、371、407)。虽然使用了三层循环,但思路清晰,非常适合初学者理解。

(第1题)
n = input('请输入一个整数:')
zishu = len(n)
print(zishu)#字符串长度
for i in range(zishu):
    if n != n :
      print(n,'不是是一个回文数')
      break
else:
    print(n,'是一个回文数')

第1题代码中,判断条件 n != n 永远为假,因此循环不会中断,最终总是执行else分支,导致无论输入什么都会输出是回文数。这里需要比较字符串的正序和反序是否相等,或者比较对称位置的字符。

以下是两种常用的正确解法:

方法一:字符串反转比较(简洁)

n = input('请输入一个整数:')
if n == n[::-1]:
    print(n, '是一个回文数')
else:
    print(n, '不是一个回文数')

方法二:循环比较首尾字符(避免使用切片)

n = input('请输入一个整数:')
length = len(n)
is_palindrome = True
for i in range(length // 2):
    if n != n:
      is_palindrome = False
      break
if is_palindrome:
    print(n, '是一个回文数')
else:
    print(n, '不是一个回文数')

两种方法都可以正确判断回文数,你可以根据已学知识选择使用。继续努力,你会越来越熟练的!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

某一个“天” 发表于 2026-3-1 23:28:32

{:10_256:}
页: [1]
查看完整版本: 零基础(最新版)课后作业第18讲动手做另解