Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 - Fatal编程技术网

Python 蟒蛇数字游戏

Python 蟒蛇数字游戏,python,Python,这是一段代码,允许用户选择一个数字,计算机猜测数字。然而,当计算机猜测时,它有时会不止一次地猜测同一个数字。如何阻止计算机猜测它已经猜到的数字 import random print('This is a game where the user chooses\n' + 'a number for the computer to guess.') guess = random.randint(1, 50) number = int(input('\n\nChoose a number

这是一段代码,允许用户选择一个数字,计算机猜测数字。然而,当计算机猜测时,它有时会不止一次地猜测同一个数字。如何阻止计算机猜测它已经猜到的数字

import random

print('This is a game where the user chooses\n' +
  'a number for the computer to guess.')

guess = random.randint(1, 50)

number = int(input('\n\nChoose a number between 1 and 50: '))

while guess != number:
    if guess > number:
        guess = random.randint(number, 50)


    else: guess < number
    guess = random.randint(1, number)

print(guess)
input('Enter to see the next number')




print('The computer guessed your number:', guess,'!')


input('\n\n\nPress enter to exit!')
max_guess = 50
min_guess = 1

guess = random.randint(min_guess, max_guess)

while guess != number:
    if guess > number:
         max_guess = guess - 1
    else:
        min_guess = guess + 1         
    guess = random.randint(min_guess, max_guess)
随机导入
打印('这是一个由用户选择的游戏\n'+
“计算机可以猜测的数字。”)
guess=random.randint(1,50)
number=int(输入('\n\n选择一个介于1和50之间的数字:'))
猜猜看!=编号:
如果猜测>数字:
guess=random.randint(数字,50)
其他:猜测<数字
guess=random.randint(1,数字)
打印(猜测)
输入('输入以查看下一个数字')
打印('计算机猜到您的号码:',猜,!')
输入('\n\n\n按enter退出!')

您可以保留计算机猜测的所有数字的缓存。可能使用
dict
list
或其他方法

然而,这并不能阻止计算机猜测相同的数字(这只是意味着如果它已经看到了,它会选择另一个数字)


如果你不想两次猜同一个数字,你需要从一组固定的数字中随机抽取数字,然后从集合中删除该数字。这保证了您永远不会选择同一个数字两次。但是,根据候选数量的不同,这可能是可行的解决方案,也可能不是可行的解决方案(例如,如果存在无限多的可能性)。

您可以保留计算机猜测的所有数字的缓存。可能使用
dict
list
或其他方法

然而,这并不能阻止计算机猜测相同的数字(这只是意味着如果它已经看到了,它会选择另一个数字)


如果你不想两次猜同一个数字,你需要从一组固定的数字中随机抽取数字,然后从集合中删除该数字。这保证了您永远不会选择同一个数字两次。但是,根据候选人数的不同,这可能是可行的解决方案,也可能不是可行的解决方案(例如,如果可能性无限)。

无需重新编写游戏的其他方面

如果不选择相同的数字两次,请尝试以下操作:

numbers = range(1,51)
ind = random.randint(0, len(numbers)-1)
guess = numbers[ind]
numbers.remove(ind+1)
数字
将仅包含要猜测范围内未使用的数字列表

(当你有一个49个猜测数字的列表时,不需要花很长时间就能找到未使用的数字!)

[编辑]并从下面的评论中:

numbers = range(1,51)
guess = numbers.pop(random.randint(0,len(numbers)-1))

在不重写游戏其他方面的情况下

如果不选择相同的数字两次,请尝试以下操作:

numbers = range(1,51)
ind = random.randint(0, len(numbers)-1)
guess = numbers[ind]
numbers.remove(ind+1)
数字
将仅包含要猜测范围内未使用的数字列表

(当你有一个49个猜测数字的列表时,不需要花很长时间就能找到未使用的数字!)

[编辑]并从下面的评论中:

numbers = range(1,51)
guess = numbers.pop(random.randint(0,len(numbers)-1))

问题是,您只保留了最后的猜测信息,并且猜测范围介于该信息和总范围的最大值或最小值之间。这将保持相同的方法,但基于已经知道其高于或低于已经猜测的数字,限制猜测

import random

print('This is a game where the user chooses\n' +
  'a number for the computer to guess.')

guess = random.randint(1, 50)

number = int(input('\n\nChoose a number between 1 and 50: '))

while guess != number:
    if guess > number:
        guess = random.randint(number, 50)


    else: guess < number
    guess = random.randint(1, number)

print(guess)
input('Enter to see the next number')




print('The computer guessed your number:', guess,'!')


input('\n\n\nPress enter to exit!')
max_guess = 50
min_guess = 1

guess = random.randint(min_guess, max_guess)

while guess != number:
    if guess > number:
         max_guess = guess - 1
    else:
        min_guess = guess + 1         
    guess = random.randint(min_guess, max_guess)

问题是,您只保留了最后的猜测信息,并且猜测范围介于该信息和总范围的最大值或最小值之间。这将保持相同的方法,但基于已经知道其高于或低于已经猜测的数字,限制猜测

import random

print('This is a game where the user chooses\n' +
  'a number for the computer to guess.')

guess = random.randint(1, 50)

number = int(input('\n\nChoose a number between 1 and 50: '))

while guess != number:
    if guess > number:
        guess = random.randint(number, 50)


    else: guess < number
    guess = random.randint(1, number)

print(guess)
input('Enter to see the next number')




print('The computer guessed your number:', guess,'!')


input('\n\n\nPress enter to exit!')
max_guess = 50
min_guess = 1

guess = random.randint(min_guess, max_guess)

while guess != number:
    if guess > number:
         max_guess = guess - 1
    else:
        min_guess = guess + 1         
    guess = random.randint(min_guess, max_guess)

你想要真实的随机数并且你已经连接到互联网了吗


我建议您也可以使用random.seed或/和random.choice(范围(最小值,最大值))

您想要真正的随机数并且连接到Internet吗

我建议也使用random.seed或/和random.choice(范围(最小值,最大值))

您可以尝试以下方法:

#!/usr/bin/env python
import random
print('This is a game where the user chooses a number for the computer to guess.')

guesses = range(1,51)
random.shuffle(guesses)

number = int(input('\n\nChoose a number between 1 and 50: '))

while True:
  guess=guesses[0]
  print "The computer guessed %d" % (guess)
  if guess > number:
    guesses=[x for x in guesses if x<guess]
  elif guess < number:
    guesses=[x for x in guesses if x>guess]
  else:
    break

print('The computer guessed your number!')
#/usr/bin/env python
随机输入
打印('这是一个用户选择一个数字让计算机猜的游戏。')
猜测=范围(1,51)
随机。洗牌(猜测)
number=int(输入('\n\n选择一个介于1和50之间的数字:'))
尽管如此:
猜测=猜测[0]
打印“计算机猜测%d%”(猜测)
如果猜测>数字:
猜测=[x表示猜测中的x,如果是xguess]
其他:
打破
打印('计算机猜到了您的号码!')
我们将存储所有可能的猜测并随机化它们的顺序。然后,我们将使用来自用户的信息逐步消除潜在的猜测。我们不必在执行过程中重新排列或选择随机数,因为从随机排列的数组中删除元素可以保持我们将从中提取的下一个元素的“随机性”

在固定
random.randint()
调用的范围时,也可以解决问题(并且以更简洁的方式),我描述的方法提供了一种更通用的替代方法(例如,如果用户突然告诉您他们的号码是奇数)。

您可以尝试以下方法:

#!/usr/bin/env python
import random
print('This is a game where the user chooses a number for the computer to guess.')

guesses = range(1,51)
random.shuffle(guesses)

number = int(input('\n\nChoose a number between 1 and 50: '))

while True:
  guess=guesses[0]
  print "The computer guessed %d" % (guess)
  if guess > number:
    guesses=[x for x in guesses if x<guess]
  elif guess < number:
    guesses=[x for x in guesses if x>guess]
  else:
    break

print('The computer guessed your number!')
#/usr/bin/env python
随机输入
打印('这是一个用户选择一个数字让计算机猜的游戏。')
猜测=范围(1,51)
随机。洗牌(猜测)
number=int(输入('\n\n选择一个介于1和50之间的数字:'))
尽管如此:
猜测=猜测[0]
打印“计算机猜测%d%”(猜测)
如果猜测>数字:
猜测=[x表示猜测中的x,如果是xguess]
其他:
打破
打印('计算机猜到了您的号码!')
我们将存储所有可能的猜测并随机化它们的顺序。然后,我们将使用来自用户的信息逐步消除潜在的猜测。我们不必在执行过程中重新排列或选择随机数,因为从随机排列的数组中删除元素可以保持我们将从中提取的下一个元素的“随机性”


在确定
random.randint()
调用的范围时,也可以解决问题(并且以更简洁的方式),我描述的方法提供了一种更通用的替代方法(例如,如果用户突然告诉您他们的号码是奇数)。

因为这似乎是一个“大于,小于”的游戏,我建议这个问题可以解决