fc5igm 发表于 2021-5-30 11:35:44

关于019讲动动手的问题

本帖最后由 fc5igm 于 2021-5-30 11:42 编辑

1.
-------------------------------------------------------------------------------
我的答案
nums =
target = 9
n=len(nums)
for i in range(n):
    for j in range(n):
      if nums + nums == target:
            print('[',i,', ',j,']',sep='')
输出结果



标答
nums =
target = 9

n = len(nums)
for i in range(n):
    for j in range(i+1, n):
      if nums + nums == target:
            print()
输出结果


为什么print()代码可以去重?这里边的逻辑是什么?

2.
-------------------------------------------------------------------------------
nums = []

isInput = True
while isInput == True:
    x = input("请录入一个整数(输入STOP结束):")
    if x != "STOP":
      nums.append(int(x))
    else:
      isInput = False

target = int(input("请录入目标整数:"))

isFind = False
n = len(nums)
for i in range(n):
    for j in range(i+1, n):
      if nums + nums == target:
            print()
            isFind = True

if isFind == False:
    print("找不到!")
请问代码第七行, nums.append函数是什么意思?

Twilight6 发表于 2021-5-30 11:42:55


不是 print 可以去重,是你代码和答案不同

嵌套的for 循环你是从 0~n ,而甲鱼哥答案是从 i+1~n

所以你出现了重复打印,甲鱼哥的没有出现,把你代码改成这样就相同了:

nums =
target = 9
n=len(nums)
for i in range(n):
    for j in range(i+1,n):
      if nums + nums == target:
            print('[',i,', ',j,']',sep='')

Twilight6 发表于 2021-5-30 11:44:38


nums.append函数是什么意思?

将 x 转化整型后添加入 nums 字符串

逃兵 发表于 2021-5-30 11:47:24

1.
不是print去重
标答第六行 for j in range(i+1, n):
range起始位置就在i+1了,不会再出现i值了(相当于去重了)

2.
nums是列表
nums.append 函数是列表增加元素
例子:
>>> nums = []
>>> nums.append(1)
>>> nums.append()
>>> nums.append((3,))
>>> print(nums)
, (3,)]

fc5igm 发表于 2021-5-30 14:23:25

逃兵 发表于 2021-5-30 11:47
1.
不是print去重
标答第六行 for j in range(i+1, n):


将for j in range(i+1, n): 改为for j in range(i, n): 是否会更好?

逃兵 发表于 2021-5-30 15:00:25

本帖最后由 逃兵 于 2021-5-30 15:02 编辑

fc5igm 发表于 2021-5-30 14:23
将for j in range(i+1, n): 改为for j in range(i, n): 是否会更好?

不好,把i作为起始位置与i本身重复了

页: [1]
查看完整版本: 关于019讲动动手的问题