将游戏伪代码转换为python

1 python pseudocode

使计算机猜测用户在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
Run Code Online (Sandbox Code Playgroud)

我需要一些认真的帮助!我根本不懂这些东西!这就是我的全部

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()
Run Code Online (Sandbox Code Playgroud)

我甚至不知道它是否正确!

Sin*_*ion 14

在考虑如何在python(或任何语言)中实现它之前,让我们看一下伪代码,这看起来是一个很好的解决问题的计划.

我猜你可能会遇到的一件事就是伪代码引用变量的方式,比如highlow.理解变量的方法是考虑它们可以存储值的槽.在任何给定时间,变量都有一些值,如数字5,或对打开文件的引用.可以通过使用其名称随时召唤该值,或者可以通过赋值将其赋予新值,并且旧值将被遗忘,新值取代它.

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

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

相反,你想做的是永远循环,直到一些条件(循环体中的变化)变为假.在python中,while语句执行此操作.如果你熟悉一个if语句,while看起来是一样的,但是在完成主体之后,重新评估条件,如果它仍然为真,则再次执行主体.

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


除了将伪代码转换为工作代码之外,了解程序实际执行的操作可能很有用.这里的关键是第4行,程序猜测两个值的平均值.之后程序会根据猜测的效果做出决定.

在第一次循环中,high包含1000并low包含1,平均值为500(实际上平均值为500.5,但由于我们平均整数,python猜测我们希望除法的结果也是整数).显然猜测只有0.1%的可能性是正确的,但如果错了,用户应该告诉我们它是否太高或太低.无论哪种方式,这个答案完全消除了50%的可能猜测.

例如,如果用户考虑的是较低的数字,那么当程序猜到500时,用户会告诉程序500太高,然后程序就不必猜测该数字是否在501到1000的范围.这可以为计算机节省大量的工作.

要使用该信息,程序会跟踪目标编号可能的值范围.当猜测的数字太高时,程序向下调整其上限,恰好低于猜测,如果猜测太低,程序将其下限向上调整到略高于猜测.

当程序再次猜到时,猜测正好在可能范围的中间,再次将范围缩小一半.在一次猜测中,可能的猜测数量从原来的1000个增加到500个,在两个猜测中从250个增加到250个.如果程序有可怕的运气,并且不能得到两个(实际上很可能),那么到了第三个,它只剩下125个数字了.在第四次猜测之后,只有62个数字保持在范围内.这种情况仍在继续,经过八次猜测后,只剩下3个数字,程序会尝试中间数字进行第九次猜测.如果结果是错的,只留下一个数字,程序就猜对了!

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


一些代码怎么样!由于我不想剥夺您的学习经验,我只会给您一些可能对您有帮助的片段.python是一种专为交互式探索而设计的语言,因此启动你的翻译并给它一个机会.我将在显示提示的情况下发布示例,实际上不会输入.

以下是使用该while子句的示例:

>>> x = 1000
>>> while x > 1:
...     x = x/2
...     print x
...
500
250
125
62
31
15
7
3
1
>>> x
1
Run Code Online (Sandbox Code Playgroud)

从用户获取控制台输入应该通过该raw_input()功能完成.它只返回用户输入的内容.这有点难以展示.为了简化操作,在需要输入的每一行python之后,我将输入"Hello World!" (没有报价)

>>> raw_input()
Hello World!
'Hello World!'
>>> y = raw_input()
Hello World!
>>> print y
Hello World!
>>> 
Run Code Online (Sandbox Code Playgroud)

一些概念的组合怎么样!

>>> 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
>>> 
Run Code Online (Sandbox Code Playgroud)

哎呀.那里有一点点虫子.看看你能解决它!


Ale*_*lli 11

我根本不懂这些东西!

这很成问题,但是,很好,让我们一步一步!你的家庭作业开始了:

向用户打印说明

你说,所以你不理解任何东西,这意味着你也不理解这一部分.好吧:"用户"是运行程序的人."说明"是英语句子,告诉他或她如何玩游戏,根据以下引用来说,这个非常明确和详细的任务:

该程序应首先将指令打印到屏幕上,说明用户应选择1到1000之间的数字,计算机将在不超过10次尝试中猜测它.

" print"是一个发出信息的Python指令; 例如,尝试仅包含的程序

print "some information"
Run Code Online (Sandbox Code Playgroud)

看看它是如何工作的.好的,你能否编辑你的回答告诉我们你已经明白这一点,所以我们可以转到下一个?如果我正在使用的任何文字或概念对您来说仍然太高级,请随时在此处发表评论并提出更多问题,我将尽力澄清!

  • 当我被困住的时候,我希望我有Martellibot帮我做作业:) (3认同)