python - python中的while循环和集合
问题描述
我正在编写一个函数,该函数int
从预定义列表中获取用户的输入并将其添加到集合中。代码运行良好,直到所有 (11) 个项目都已添加到集合中。它只是继续前进。是因为我的代码设置错误还是逻辑错误?
def append_guess(n):
list_of_numbers = [1, 11, 7, 8, 12, 6, 15, 30, 5, 3, 2]
guessed = set()
while (n):
try:
n = int(input("Enter an integer between 1-30 >> "))
if n in list_of_numbers:
print("right guess")
guessed.add(n)
print(guessed)
else:
print("Wrong Guess - Keep Trying!! ")
except:
if guessed == set(1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30):
print("Great Job! You have Guessed All numbers")
break
append_guess(1)
解决方案
你用 try
错except
了。一般来说,它们不应该用于常规程序逻辑。它们仅用于处理异常。此外,您不需要同时包含相同数字的列表和集合来进行正确猜测。
相反,将检查作为 while 循环的条件。所以也许是这样的:
correct_set = {1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30}
guessed = set()
while guessed != correct_set:
n = int(input("Enter an integer between 1-30 >> "))
if n in correct_set:
print("right guess")
guessed.add(n)
print(guessed)
else:
print("Wrong Guess - Keep Trying!! ")
print("Great Job! You have Guessed All numbers")
我不确定该函数的用途是什么,但是如果要将其分解为函数,则可以将输入和检查逻辑分开,如下所示。另外我会考虑为“n”使用更好的名称,也许称它为“guess”?所以是这样的:
def append_guess(guess, correct_set, guessed):
if guess in correct_set:
print("right guess")
guessed.add(guess)
print(guessed)
else:
print("Wrong Guess - Keep Trying!! ")
return guessed
if __name__ == "__main__":
correct_set = {1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30}
guessed = set()
while guessed != correct_set:
guess = int(input("Enter an integer between 1-30 >> "))
guessed = append_guess(guess, correct_set, guessed)
print("Great Job! You have Guessed All numbers")
推荐阅读
- scikit-learn - 如何在一个 ColumnTransformerr 中为所有类型的特征、分类特征和数值特征组合管道?
- google-cloud-functions - 如何创建运行 gcloud 命令的函数?
- android - android studio 4.2 beta 6 gradle 问题
- javascript - 在基于函数的组件中更新 React js 中的对象
- java - 有没有直接在@Query 中使用模型对象?
- sql - postgres 中 SET XACT_ABORT ON 的替代方法是什么
- tensorflow - ParseError:172:3:消息类型“object_detection.protos.TrainConfig”没有名为“fine_tune_checkpoint_version”的字段
- docker - 有没有办法在发出 docker down 命令时自动备份数据库
- python - Pyinstaller 错误:没有这样的文件或目录
- celery - celery-slack 是否适用于周期性任务?