首先,我刚刚开始使用Python(所以您也可以忽略所有可怕的分号)。这是一个简单的程序,作为检查您所学知识的最后一章的任务。基本上,这是一个“猜测数字”,但是程序必须猜测您的数字(这是与书中相反的程序)。也许这不是本书的目的,但我还没有学过,但我的好奇心使我尽力而为,所以我不得不问。您如何记住循环之间的变量?我认为我必须使用表,并以此方式在循环之间保存并检查变量,但是Python本身也许有一种更简单的方法。
在代码中,程序会记住它生成的最后一个数字,但是另一个“被遗忘”了-在代码中显然可见。这样做的目的是最大程度地减少程序猜测数字(猜测的窄数字)的尝试。代码来获得程序的想法:
#Program Switcheroo, what is the number?
import random;
print("\t Welcome to game 'What is the number?' where you are picking number!");
print("\nRules are simple and based on your honesty ;)");
print("Think of number between 1 and 100, computer will try to guess it.");
print("If the number is too big you type 'too big', too small 'too small'");
print(", and if computer guessed it right 'right'");
print("\nEverything clear? Let's start!");
guess = random.randint(1, 100);
tries = 1;
print("Your number is...",guess,"?");
print("Answer 'too big', 'too small', 'right'");
number = input();
while number != "right":
if number == "too big":
tries += 1;
guess = random.randint(1, guess);
print ("Your number is...",guess,"?");
print("Answer 'too big', 'too small', 'right'");
number = input();
elif number == "too small":
tries += 1;
guess = random.randint(guess, 100);
print ("Your number is...",guess,"?");
print("Answer 'too big', 'too small', 'right'");
number = input();
else:
print("Ups!");
break;
print("I won in", tries, "tries!");
input("\n\nTo end app, press Enter.");
我建议您进行以下优化(为了提高代码质量,几乎没有什么事情要做,例如删除重复的代码并改用函数,但我会留给您):
您可以管理猜测的上下限,并为每个猜测更新上限-如果您的猜测为X且太大,则所有将来的猜测必须小于X,因此您的上限将为X-1(且相同下限)。
这是一个基本的实现:
guess = random.randint(1, 100)
tries = 1
print("Your number is...", guess, "?")
print("Answer 'too big', 'too small', 'right'")
number = input()
upper_bound = 100
lower_bound = 1
while number != "right":
if number == "too big":
upper_bound = guess-1 if guess < upper_bound else upper_bound
tries += 1
guess = random.randint(lower_bound, upper_bound)
print(f"lower bound: {lower_bound}, upper bound: {upper_bound}")
print("Your number is...", guess, "?")
print("Answer 'too big', 'too small', 'right'")
number = input()
elif number == "too small":
lower_bound = guess+1 if guess > lower_bound else lower_bound
print(f"lower bound: {lower_bound}, upper bound: {upper_bound}")
tries += 1
guess = random.randint(lower_bound, upper_bound)
print("Your number is...", guess, "?")
print("Answer 'too big', 'too small', 'right'")
number = input()
else:
print("Ups!")
break
print("I won in", tries, "tries!")
input("\n\nTo end app, press Enter.")
在此实现中,您不必“记住”所有猜测,因此您的内存占用空间将减小,并且尝试次数将减少。
为了调试目的,我在每次迭代的上下边界都添加了打印内容-向您展示边界是如何变化的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句