猜我的号码游戏

嘿,我是Python的新手 这里很多... 无论如何,我发现了如何制作"猜测我的数字游戏" 玩家猜测1到100之间的数字,但我想切换事物 大约. 我希望能够放入自己的电话号码并拥有计算机 猜一下. 我已经知道如何猜测(使用randrange),但是我 很难使它变得更聪明. (例如猜测更高或更低的基础 关于它需要做什么.)这是我现在拥有的代码: _____________________________________________________________________________________________________ 导入随机 猜测= 0 尝试= 0 number =输入("选择1到100之间的数字以猜测: ") 而数字> 100或数字<1: number =输入("选择1到100之间的数字以猜测: ") 猜猜!=数字: 猜测= random.randrange(101) 打印"计算机猜测",猜测 尝试 += 1 过去=猜测 猜测<数字: 猜测= random.randrange(猜测,101) 打印"计算机猜测",猜测 尝试 += 1 猜测>数字: 猜测= random.randrange(0,猜测) 打印"计算机猜测",猜测 尝试 += 1 打印"计算机猜测您的号码之后",尝试"尝试". RAW_INPUT("按Enter到退出.") ________________________________________________________________________________________________ 如您所见,我已经变得更聪明了,但我想我可以 仍然更好. 有任何想法吗? 另外,有人知道一个非常受欢迎的Python论坛吗?

# 回答1

*很多*年前我拥有一个Ti 58c口袋计算器(任何人都记得 这些?). 它有您谈论的游戏内置的游戏. 它使用了 分配:您必须选择一个数字,而不是告诉计算机是否 它猜测的数字小于或大于或大于或等于您拥有的数字 选择. 干杯 弗朗兹·盖格(Franz Geiger) " EAS" schrieb im newsbeitrag 新闻:u9ppc.5447$ 390828@attbi_s52 ...
# 回答2

EAS写道: 大家好, 我也在穿越Python. Python的Veeery Newbie. 这是您猜测游戏的变体. #不要忘记那些标签或空间! #你在python中似乎很重要. #--- BEG ---------------------------------------------------------------- #!/usr/bin/python #名称guess1.py maxnum = 100 minnum = 1 数字= 0 而数字> maxnum+1或数字 maxnum+1或数字数字: 打印"比它少",猜猜 maxnum =猜测 猜测= maxnum-(maxnum -minnum + 1) / 2 Elif Guess <数字: 打印"不仅仅是",猜猜 minnum =猜测 猜测= minnum +(maxnum -minnum + 1) / 2 别的: 打印"认识我,我猜对了!" 完成= true 尝试=尝试 + 1 打印"计算机猜测您的号码之后",尝试"尝试". RAW_INPUT("按Enter到退出.") # - - 结尾 - - - - - - - - - - - - - - - // MOMA http://www.futuredesktop.org ::顶部的newbie链接(_@_ _) Am Samstag,15.Mai2004 15:44 Schrieb Eas: 平均而言,最短的运行时间(也是确定性运行时 如果您使用间隔步行,将实现O(log2(高低))). 因此: 数字= 64 低= 1 高= 100 而低<>高: med =(低+高)// 2 尝试 += 1 如果med ==编号: 打印"我猜你的电话:", Elif Med <数字: 如果med ==低: 打印"我猜你的电话:",Med+1 低= med+1 别的: 低= med 别的: 高= med 打印"我需要",尝试." 恩! Heiko.
# 回答3

在2004年5月15日星期六15:58:22 +0200,Heiko Wundram 写道: 并不是真正的python,但是... 该二聚算法不好. 平均需要 比必要多0.5个步骤. 更好的是... DEF DICO2(低,高,猜测): 而低<高: t =(低 +高)// 2 g =猜测(t) 如果g == 0: 返回t elif g == -1: 低= t+1 别的: 高= T-1 返回低 假设该猜测(x)返回-1、0或1取决于 如果数字太低,正确或太高. 如果您发现自己在处理特殊案例 一分解算法(例如,您的测试"如果Med ==低") 然后,您可以确定有更好的方法. Hth 安德里亚
# 回答4

安德里亚·格里菲尼(Andrea Griffini) ...假设该猜测(x)返回-1、0或1,具体取决于数字是否太低,正确或太高. 并不是对OP的答案; 这是一种使用的解决方案 二号模块,让它完成重型工作. 它使用相同的 您拥有的猜测功能与python的__cmp__相关. 这不是答案 因为对于一个学习编程的人来说,这太复杂了. 导入二等 def find(min = 1,max = 100): 打印"想想","最小"和"最大" a =范围(最小,最大+1) 尝试: bisect.bisect_left(a,guess()) 打印"您的号码不在",Min,""和" 最大限度 打印"也许您没有想到整数?" 除了完成,E: 打印"只拿走",e.count,"猜测" 类完成(例外): def __init __(自我,答案,计数): self.answer =答案 self.count = count 课堂猜测: def __init __(自我): self.count = 0 def __cmp __(self,val): self.count = self.count + 1 答案= raw_input("是%d? "和[>]大于)?"%val) 如果答案==" y": 加薪完成(答案,self.count) 如果答案==" <": 返回-1 返回1 andrew daxe@dalkescientific.com
# 回答5

在阳光下,2004年5月16日,格林尼治标准时间14:57:28,"安德鲁·达克" 写道: 猜测太多次也有同样的问题. bisect_left在给定值的排序列表中寻找位置; "猜测数字"游戏是不同的,您正在寻找 代替值. 您可以通过使用范围为 人造清单,但是即使 它不需要(例如,如果回答了8个,则为8,而"高"为6 您不需要其他猜测; 您已经知道答案是7). 当然,这不是bisect_left错误; 该功能更多 一般,不能从知道清单中利用 这确实是一系列整数. 看到一个名为"重型 工作":曾经的复杂(和IMO)代码 能够称呼分为一比更复杂,更少 直观比二级代码本身. 对我来说,似乎更准确地说重重 工作正在尝试将二选的用途拨打,这不是什么 一分为二. 安德里亚
# 回答6

安德里亚·格里菲尼(Andrea Griffini): 是的,当我写它时,我也在微笑. 这更多是 "看看我的代码有多好." :) andrew daxe@dalkescientific.com

标签: python

添加新评论