- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不知道我的代码有什么问题。我试图让用户想出 1 到 100 之间的一个数字,然后这个程序就能猜出它。该程序将范围的高值和低值相加并除以二,然后将其用作猜测值。如果程序猜测的数字大于他们的数字,则用户输入 1,如果比他们的数字小,则输入 -1,如果猜测正确,则输入 0。最多猜测 7 次后,猜出的数字应该是正确的。当我运行我的代码时,它会不断打印出 50 的猜测并且永远不会改变。它似乎永远不会贯穿 if 语句。它应该运行整个程序并找到新的猜测。
def main():
import random
print("Guessing Game")
print("")
print("Think of a number 1 and 100 inclusive.\nAnd I will guess what it is in 7 tries or less.")
print("")
ready = input("Are you ready? (y/n): ")
print("")
if ready != "y" and ready != "n":
ready = input("Are you ready? (y/n): ")
if ready == "n":
print("Bye")
if ready == "y":
lo = 0
hi = 100
guess_high = 1
guess_same = 0
guess_low = -1
a = random.randint(1,100)
num_list = []
for i in range(1,100):
num_list.append(i)
while (lo <= hi):
guess_count = 0
for guess_count in range(1,8):
guess_count += 1
guess = (lo + hi) // 2
print("Guess",guess_count," : The number you thought was",guess)
user_response = input("Enter 1 if my guess was high, -1 if low, and 0 if correct: ")
if (user_response == 1):
hi = guess - 1
guess_count += 1
guess = (lo + hi) // 2
elif (user_response == -1):
lo = guess + 1
guess_count += 1
guess = (lo + hi) // 2
elif (user_response == 0):
print("Thank you for playing the Guessing Game.")
main()
最佳答案
您的主要问题在第 29、30、34、38 行:input()
返回一个字符串,但您正在针对一个 int 进行测试。 "1"
不等于 1
!
其他一些问题:
第 2 行:import random
不应在 main()
第 7-10 行:获取对 ready
的是/否响应应该在 while
循环或(更好)在它自己的函数中完成 - 重复直到得到一个有效的回应
第 9、11、13 行:您需要了解 else
和 elif
第 14 行:应该是 lo = 1
第 19 行:a
有什么用?你永远不会使用它。
第 20-22 行:您不需要保留一个包含每个可能数字的列表,只需保留您已经拥有的最低和最高可能值(lo
和 hi
),如果你做了,你可以做 num_list = list(range(1, 100))
第 25、26、32、36 行:增加 guess_count
是无用且不必要的,因为每次重新进入 for
循环时它都会重置
这是一个清理过的版本:
# assumes Python 3
def get_yn(prompt, yes_values={"y", "yes"}, no_values={"n", "no"}):
"""
Prompt for a yes or no response;
return True for yes or False for no
"""
while True:
response = input(prompt).strip().lower()
if response in yes_values:
return True
elif response in no_values:
return False
def get_int(prompt, lo=None, hi=None):
"""
Prompt for a number,
return as int
"""
while True:
try:
value = int(input(prompt))
if (lo is None or lo <= value) and (hi is None or value <= hi):
return Value
except ValueError:
pass
def get_one_of(prompt, values):
"""
Prompt for a response in values,
return response string
"""
while True:
value = input(prompt).strip().lower()
if value in values:
return value
def main():
print(
"Guessing Game\n"
"\n"
"Think of a number in [1..100],\n"
"and I will try to guess it in no more than 7 tries.\n"
)
if get_yn("Are you ready? (y/n): "):
lo, hi = 1, 100
got_it = False
for attempt in range(1, 8):
guess = (lo + hi) // 2
print("I guess {}!".format(guess))
res = get_one_of("Was this [L]ow, [H]igh, or [C]orrect? ", {"l", "h", "c"})
if res == "l":
lo = guess + 1
elif res == "h":
hi = guess - 1
else: # correct!
got_it = True
break
if lo > hi:
break
if got_it:
print("Ha! Got it in {} guesses!".format(attempt))
else:
print("Something smells in the state of Denmark...")
else:
print("Bye!")
if __name__=="__main__":
main()
关于python - 猜谜游戏python二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23451688/
我在我的应用程序中使用 Hibernate Search。其中一个子集合被映射为 IndexedEmbedded。子对象有两个字段,一个是 id,另一个是日期(使用日期分辨率到毫秒)。当我搜索 id=
The App Engine Search API有一个 GeoPoint 字段。可以用它来进行半径搜索吗?例如,给定一个 GeoPoint,查找位于特定半径内的所有文档。 截至目前,它看起来像 Ge
客户对我正在做的员工管理项目提出了这个新要求,以允许他们的用户进行自定义 bool 搜索。 基本上允许他们使用:AND、OR、NOT、括号和引号。 实现它的最佳方法是什么?我检查了 mysql,它们使
很想知道哪个更快 - 如果我有一个包含 25000 个键值对的数组和一个包含相同信息的 MySQL 数据库,搜索哪个会更快? 非常感谢大家! 最佳答案 回答这个问题的最好方法是执行基准测试。 关于ph
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
我有以下 Marklogic 查询,当在查询控制台中运行时,它允许我检索具有管理员权限的系统用户: xquery version "1.0-ml"; import schema namespace b
我希望当您搜索例如“A”时,所有以“A”开头的全名都会出现。因此,如果名为“Andreas blabla”的用户将显示 我现在有这个: $query = "SELECT full_name, id,
我想在我的网站上添加对人名的搜索。好友列表已经显示在页面上。 我喜欢 Facebook 这样做的方式,您开始输入姓名,Facebook 只会显示与查询匹配的好友。 http://cl.ly/2t2V0
您好,我在我的网站上进行搜索时遇到此错误。 Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /ho
声明( 叠甲 ):鄙人水平有限,本文为作者的学习总结,仅供参考。 1. 搜索介绍 搜索算法包括深度优先搜索(DFS)和广度优先搜索(BFS)这两种,从起点开始,逐渐扩大
我正在为用户列表使用 FuturBuilder。我通过 futur: fetchpost() 通过 API 获取用户。在专栏的开头,我实现了一个搜索栏。那么我该如何实现我的搜索栏正在搜索呢? Cont
我正在使用 MVC5,我想搜索结果并停留在同一页面,这是我在 Controller (LiaisonsProjetsPPController) 中执行搜索操作的方法: public ActionRes
Azure 搜索中的两种方法 Upload 与 MergeOrUpload 之间有什么区别。 他们都做完全相同的事情。即,如果文档不存在,它们都会上传文档;如果文档已经存在,则替换该文档。 由于这两种
实际上,声音匹配/搜索的当前状态是什么?我目前正在远程参与规划一个 Web 应用程序,该应用程序将包含和公开记录的短音频剪辑(最多 3-5 秒,人名)的数据库。已经提出了一个问题,是否可以实现基于用户
在商业应用程序中,具有数百个面并不罕见。当然,并非所有产品都带有所有这些标记。 但是在搜索时,我需要添加一个方面查询字符串参数,其中列出了我想要返回的所有方面。由于我事先不知道相关列表,因此我必须在查
当我使用nvcc 5.0编译.cu文件时,编译器会为我提供以下信息。 /usr/bin/ld: skipping incompatible /usr/local/cuda-5.0/lib/libcud
我正在使用基于丰富的 Lucene 查询解析器语法的 Azure 搜索。我将“~1”定义为距离符号的附加参数)。但我面临的问题是,即使存在完全匹配,实体也没有排序。 (例如,“blue~1”将返回“b
我目前有 3 个类,一个包含 GUI 的主类,我在其中调用此方法,一个包含数据的客户类,以及一个从客户类收集数据并将其放入数组列表的 customerList 类,以及还包含搜索数组列表方法。 我正在
假设我有多个 6 字符的字母数字字符串。 abc123、abc231、abc456、cba123、bac231 和 bac123 。 基本上我想要一个可以搜索和列出所有 abc 实例的选择语句。 我只
我有这个表 "Table"内容: +--------+ | Serial | +--------+ | d100m | <- expected result | D100M | <- expect
我是一名优秀的程序员,十分优秀!