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