Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表切片在我的猜测游戏中不起作用_Python_Slice - Fatal编程技术网

Python列表切片在我的猜测游戏中不起作用

Python列表切片在我的猜测游戏中不起作用,python,slice,Python,Slice,我正在尝试创建一个游戏,用户想象一个1-20之间的数字,然后计算机尝试猜测它。 为此目的: 1.我创建了一个从1到20的所有数字的列表。 2.程序从列表中选择一个随机数,询问虚数是小于还是大于随机数。 3.用户回答为“j”或“n” 4.在每次猜测之后,列表将从冗余数字中分割出来 5.最后,列表中应该只有一个数字,计算机应该得出正确的数字。 代码: 然而,奇怪的是,切片无法正常工作,我多次遇到这样的结果: 如您所见,在我确认我的号码小于9后,它不会删除9-13中的号码列表的索引会随着列表的缩小而

我正在尝试创建一个游戏,用户想象一个1-20之间的数字,然后计算机尝试猜测它。 为此目的: 1.我创建了一个从1到20的所有数字的列表。 2.程序从列表中选择一个随机数,询问虚数是小于还是大于随机数。 3.用户回答为“j”或“n” 4.在每次猜测之后,列表将从冗余数字中分割出来 5.最后,列表中应该只有一个数字,计算机应该得出正确的数字。 代码:

然而,奇怪的是,切片无法正常工作,我多次遇到这样的结果:


如您所见,在我确认我的号码小于9后,它不会删除9-13中的号码

列表的索引会随着列表的缩小而改变;您可以使用
i=d找到索引。索引(x)


您不使用索引进行切片,而是使用列表的内容进行切片。尝试以下操作以查找索引:

del[:d.index(x)]
另外,您不需要一段时间,也不需要一个带中断的if语句。 就这样用吧

而len(d)>1:
通过
#还有代码吗
其他:
打印(f“您的号码是{d[0]}。您用{len(尝试)}次尝试猜到的。”)
也不要使用列表和附加。Eiter追加猜测的数字,或者只使用递增计数器
trys=0/trys+=1

完整的代码可能如下所示。 您的代码也需要始终进行两次尝试,即使您只有最后的选择。 然后,您应该限制现在给出值的答案的Qestion。
x=random.choice(d[:-1])
x=random.choice(d[1:])

随机导入
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
d=列表(范围(1,21))
尝试=0
而len(d)>1:
如果随机。选择([真,假]):
x=随机选择(d[:-1])
尝试次数+=1
打印(f“您的数字是否大于{x}?”)
回答=输入(“类型:j/n\n”)
边回答边回答!=“j”并回答!=“n”:
回答=输入(“类型:j/n\n”)
如果答案==“j”:
del d[:d.索引(x)+1]
印刷品(d)
其他:
deld[d.索引(x)+1:]
印刷品(d)
其他:
尝试次数+=1
x=随机选择(d[1:]
打印(f“您的数字是否小于{x}?”)
回答=输入(“类型:j/n\n”)
边回答边回答!=“j”并回答!=“n”:
回答=输入(“类型:j/n\n”)
如果答案==“j”:
德尔d[d.指数(x):]
印刷品(d)
其他:
del d[:d.索引(x)]
印刷品(d)
其他:
打印(f“您的号码是{d[0]}。您用{trys}次尝试猜到的。”)
import random
d = list(range(1,21))
tries = []
while True:
    if len(d) > 1:
        x = random.choice(d)
        tries.append(1)
        print(f"Is your number bigger than {x}?")
        answer = input()
        if answer == 'j':
            del d[:x]
            print(d)
        if answer == 'n':
            del d[x:]
            print(d)
        tries.append(1)
        x = random.choice(d)
        print(f"Is your number smaller than {x}?")
        answer = input()
        if answer == 'j':
            del d[x-1:]
            print(d)
        if answer == 'n':
            del d[:x-1]
            print(d)
    else:
        print(f"Your number is {d[0]}. You guessed with {len(tries)} attempts.")
        break
import random
d = list(range(1,21))
tries = []
while True:
    if len(d) > 1:
        x = random.choice(d)
        tries.append(1)
        print(f"Is your number bigger than {x}?")
        answer = input()
        i = d.index(x)
        if answer == 'j':
            del d[:i+1]
        if answer == 'n':
            del d[i+1:]
        print(d)
        tries.append(1)
        x = random.choice(d)
        print(f"Is your number smaller than {x}?")
        answer = input()
        i = d.index(x)
        if answer == 'j':
            del d[i:]
        if answer == 'n':
            del d[:i]
        print(d)
    else:
        print(f"Your number is {d[0]}. You guessed with {len(tries)} attempts.")
        break