Skip to main content
 首页 » 编程设计

python之将游戏伪代码转换为python

2025年05月04日13落叶无声

让计算机猜测一个用户选择的数字,该数字在1到1000之间,且不超过10个猜测。此分配使用一种称为二进制搜索的算法。每次猜测之后,该算法会将可能的答案数量减少一半。完整的伪代码
程序如下:您的任务是将其转换为可用的python程序。
该程序应首先在屏幕上打印说明,说明用户
应该选择一个介于1到1000之间的数字,并且计算机会猜测它
10次​​尝试。然后,它开始进行猜测,并且在每次猜测之后都要求用户提供反馈。
如果需要降低猜测值,则应指示用户输入-1,如果正确则猜测为0,
如果需要更高的猜测,则返回1。如果用户输入的响应无效,则应重复说明,并允许用户重试。

伪码

- Print instructions to the user   
-Start with high = 1000, low = 1, and tries = 1  
- While high is greater than low    
  - Guess the average of high and low   
  - Ask the user to respond to the guess   
  - Handle the four possible outcomes:   
    - If the guess was right, print a message that tries guesses were required and quit the program 
    - If the guess was too high, set high to one less than the guess that was displayed to the user and increment tries   
    - If the guess was too low, set low to one more than the guess that was displayed to the user and increment tries 
    - If the user entered an incorrect value, print out the instructions again 
- high and low must be equal, so print out the answer and the value of tries 


我需要一些认真的帮助!我完全不了解这些东西!
这就是我所拥有的

def main(x, nums, low, high): 
        input("Enter -1 if the guess needs to be lower, 0 if the guess was right, or 1 if the guess needs to be higher: ") 
    for i in range (1, 1001): 
 
main() 


我什至不知道这是对的!

请您参考如下方法:

在考虑如何以python(或任何语言)实现此功能之前,让我们看一下伪代码,这看起来是解决问题的不错的计划。

我猜想您可能会遇到的一件事是伪代码引用变量的方式,例如high和low。理解变量的方法是考虑变量可以存储值的位置。在任何给定时间,变量都有一些值,例如数字5或对打开文件的引用。可以随时使用其名称来召唤该值,也可以通过为其赋值来为其赋予新值,并且旧值将被新值代替而被遗忘。

伪代码引用三个变量high,low和tries。它还告诉您它们的初始值应该是什么。在第二行执行之后,这些值分别设置为1000、1和1,但是随着程序的进行,它们将采用新值。

伪代码的另一个功能是条件循环和用户输入的案例分析。您对伪代码循环的翻译不正确。在您的情况下,您已经创建了一个新变量i,并指示程序以1到1000之间的每个i值运行循环主体。显然,这与伪代码没有太大关系。

相反,您要做的是永远循环,直到某些条件(在循环主体中发生变化)变为假。在python中,while语句执行此操作。如果您熟悉if语句,则while看起来相同,但是在执行主体之后,将重新评估条件,并在仍然为真时再次执行主体。

最后,循环主体中的案例分析需要将某些内容与期望值进行比较。尽管其他一些语言有多种表达方式,但是在python中,我们只有if-elif-else子句。



除了将伪代码转换为工作代码之外,了解程序实际上在做什么可能很有用。关键在第四行,程序在此猜测两个值的平均值。之后,程序将根据猜测的结果进行操作。

在循环的第一次运行中,high包含1000,而low包含1,平均值为500(实际上,平均值为500.5,但是由于我们是对整数求平均值,因此python猜测我们想要的结果为除法也是整数)。显然,这种猜测是正确的只有0.1%的机会,但是如果错了,用户应该告诉我们它是太高还是太低。无论哪种方式,该答案都完全消除了50%的可能猜测。

例如,如果用户想到的数字太小,则当程序猜出500时,用户将告诉程序500太高,然后程序就不必再猜测数字在500中了。范围从501到1000。可以节省计算机大量的工作。

为了使用该信息,该程序会跟踪目标编号可能的值范围。当猜测的数字太高时,程序将其上限向下调整,正好低于该猜测;如果猜测的数字太低,则程序会将其下限向上调整至该猜测的正上方。

当程序再次猜测时,猜测就在可能范围的中间,将范围再次减半。可能的猜测数量从最初的1000次增加到一次猜测的500次,再到两次猜测的250次。如果程序运气不好,并且无法获得两次(实际上很有可能),那么到第三次,它只剩下125个数字需要担心。在第四个猜测之后,仅剩下62个数字。这继续进行,经过八次猜测,仅剩下3个数字,并且程序在第九次猜测中尝试使用中间数字。如果发现这是错误的,则只剩下一个数字,程序就会猜出来!

将范围分成两半然后继续到更近的一半的技术称为二分法,出现在计算机科学感兴趣的广泛主题中。



CODE呢!因为我不想剥夺您的学习经验,所以我只给您一些片段,可能会对您有所帮助。 python是一种旨在进行交互式探索的语言,因此请启动您的解释器并进行尝试。我将发布带有显示提示的示例,但不要实际键入。

这是使用while子句的示例:

>>> x = 1000 
>>> while x > 1: 
...     x = x/2 
...     print x 
... 
500 
250 
125 
62 
31 
15 
7 
3 
1 
>>> x 
1 


从用户获取控制台输入应通过 raw_input()功能完成。它只是返回用户键入的任何内容。这有点难以显示。为简化起见,在每行需要输入的python行之后,我将键入“ Hello World!”。 (无引号)

>>> raw_input() 
Hello World! 
'Hello World!' 
>>> y = raw_input() 
Hello World! 
>>> print y 
Hello World! 
>>>  


结合一些概念呢?

>>> myvar = '' 
>>> while myvar != 'exit': 
...     myvar = raw_input() 
...     if myvar == 'apples': 
...         print "I like apples" 
...     elif myvar == 'bananas': 
...         print "I don't like bananas" 
...     else: 
...         print "I've never eaten", myvar 
... 
apples 
I like apples 
mangoes 
I've never eaten mangoes 
bananas 
I don't like bananas 
exit 
I've never eaten exit 
>>>  


哎呀。那里有一点bug。看看是否可以解决!