Python 3 和 C 中的数字猜谜游戏
大多数具有 CS(计算机科学)背景的极客都会想到他们在学习编程语言后的第一个项目。在这里,您将在本文中获得您的第一个项目和基本项目。
任务:以下是步骤:
- 构建一个数字猜谜游戏,用户在其中选择一个范围。
- 假设用户选择了一个范围,即从A到B ,其中A和B属于 Integer。
- 系统将选择一些随机整数,用户必须以最少的猜测次数猜测该整数
分析:
解释 1 :如果用户输入范围,假设从 1 到 100。编译器随机选择 42 作为整数。现在猜谜游戏开始了,所以用户输入 50 作为他/她的第一个猜测。编译器显示“再试一次!你猜得太高了”。这意味着随机数(即 42)不在 50 到 100 的范围内。这就是猜测一半范围的重要性。再一次,用户猜测 50 的一半(你能告诉我为什么吗?)。所以 50 的一半是 25。用户输入 25 作为他/她的第二次猜测。这次编译器将显示,“再试一次!你猜的太小了”。这意味着小于 25(从 1 到 25)的整数无法猜测。现在用户猜测的范围更短了,即从 25 到 50。聪明!用户猜测了这个范围的一半,因此用户猜测 37 作为他/她的第三次猜测。这一次,编译器再次显示输出,“再试一次!你猜的太小了”。对于用户来说,每次猜测的猜测范围越来越小。现在,用户的猜测范围是从 37 到 50,用户猜测 43 作为他/她的第四次猜测。这次编译器将显示输出“再试一次!你猜得太高了”。因此,用户的新猜测范围将是从 37 到 43,用户再次猜测该范围的一半,即 40 作为他/她的第五次猜测。这次编译器显示输出,“再试一次!你猜的太小了”。让猜测更小,从 41 到 43。现在用户猜测 41 作为他/她的第六次猜测。这是错误的并显示输出“再试一次!你猜的太小了”。最后,用户猜出了正确的数字,即 42 作为他/她的第七次猜测。
猜测总数 = 7
解释 2 :如果用户输入范围,假设从 1 到 50。编译器随机选择 42 作为整数。现在猜谜游戏开始了。所以 50 的一半是 25。用户输入 25 作为他/她的First guess 。这次编译器将显示,“再试一次!你猜的太小了”。这意味着小于 25(从 1 到 25)的整数无法猜测。现在用户猜测的范围更短了,即从 25 到 50。聪明!用户猜测了这个范围的一半,因此,用户猜测 37 作为他/她的第二次猜测。这一次,编译器再次显示输出,“再试一次!你猜的太小了”。对于用户来说,每次猜测的猜测范围越来越小。现在,用户的猜测范围是从 37 到 50,用户猜测 43 作为他/她的第三次猜测。这次编译器将显示输出“再试一次!你猜得太高了”。因此,用户的新猜测范围将是从 37 到 43,用户再次猜测该范围的一半,即 40 作为他/她的第四次猜测。这次编译器显示输出,“再试一次!你猜的太小了”。让猜测更小,从 41 到 43。现在用户猜测 41 作为他/她的第五个猜测。这是错误的并显示输出“再试一次!你猜的太小了”。最后,用户猜出了正确的数字,即 42 作为他/她的第六次猜测。
猜测总数 = 6
因此,猜测的最小数量取决于范围。并且编译器必须根据范围自行计算猜测的最小数量。为此,我们有一个公式:-
Minimum number of guessing = log2(Upper bound – lower bound + 1)
算法:以下是步骤:
- 用户输入范围的下限和上限。
- 编译器在范围之间生成一个随机整数并将其存储在一个变量中以供将来参考。
- 对于重复猜测,将初始化一个while循环。
- 如果用户猜到的数字大于随机选择的数字,用户会得到输出“再试一次!你猜的太高了”
- 否则,如果用户猜到的数字小于随机选择的数字,用户会得到输出“再试一次!你猜的太小了”
- 如果用户猜到最少的次数,用户会得到一个“恭喜! “ 输出。
- 否则,如果用户在最少的猜测次数中没有猜到整数,他/她将得到“下次好运! “ 输出。
下面是算法的实现:
Python3
import random
import math
# Taking Inputs
lower = int(input("Enter Lower bound:- "))
# Taking Inputs
upper = int(input("Enter Upper bound:- "))
# generating random number between
# the lower and upper
x = random.randint(lower, upper)
print("\n\tYou've only ",
round(math.log(upper - lower + 1, 2)),
" chances to guess the integer!\n")
# Initializing the number of guesses.
count = 0
# for calculation of minimum number of
# guesses depends upon range
while count < math.log(upper - lower + 1, 2):
count += 1
# taking guessing number as input
guess = int(input("Guess a number:- "))
# Condition testing
if x == guess:
print("Congratulations you did it in ",
count, " try")
# Once guessed, loop will break
break
elif x > guess:
print("You guessed too small!")
elif x < guess:
print("You Guessed too high!")
# If Guessing is more than required guesses,
# shows this output.
if count >= math.log(upper - lower + 1, 2):
print("\nThe number is %d" % x)
print("\tBetter Luck Next time!")
# Better to use This source Code on pycharm!
C
#include
#include
#include
int main()
{
int number, guess, nguesses=1;
srand(time(0));
// Generates a random number between 1 and 100
number = rand()%100 + 1;
// printf("The number is %d\n", number);
// Keep running the loop
// until the number is guessed
do
{
printf("Guess the number between 1 to 100\n");
scanf("%d", &guess);
if(guess>number)
{
printf("you guessed to high\n");
}
else if(guess
OUTPUT:下面是上述程序的输出