免责声明:noob在这里。我目前正在大学学习Python,不仅在学校编写代码,还为了好玩。我目前正在编写一个生成代码的行星(我用小基础语言完全编写)并将其用于Python语言。由于我对Python的经验不足,我遇到了一个小问题,但这对你们来说可能很容易。请告诉我如何改进这段代码,以便以最简单的方式工作。另外,我想指出,我希望用户输入1到12个行星之间的数字来生成。此外,如果用户只按def num_planets():
try:
valid = ("1","2","3","4","5","6","7","8","9","10","11","12")
count = int(input("How many planets would you like to generate? "))
if count != valid:
import random
count = random.randint(1,12)
print("Given the invalid user input, the random valid integer,",count,"was selected.")
except ValueError:
import random
count = random.randint(1,12)
print("Given the invalid user input, the random valid integer,",count,"was selected.")
num_planets()
,输入1-12号码范围之外的号码,或输入除号码以外的任何号码,我希望程序只选择一个随机数。下面的代码也是我想要它的方式,但它看起来很邋and和矫枉过正......
knitr
答案 0 :(得分:0)
首先,我认为它的工作方式不符合您的预期,因为count != valid
正在将int
与tuple
字符串进行比较。因此,条件始终为True
(因此您的代码将始终生成随机值)。
您需要将valid
转换为tuple
个整数,然后使用in
operation检查int
值是否属于tuple
。
像这样:
valid = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
count = int(input("How many planets would you like to generate? "))
if count not in valid:
# use a random value
其次,为了避免重复,您可以将随机化器代码放在方法中。
像这样:
def use_random_value():
import random
count = random.randint(1, 12)
print("Given the invalid user input, the random valid integer,", count, "was selected.")
def num_planets():
try:
valid = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
count = int(input("How many planets would you like to generate? "))
if count not in valid:
use_random_value()
except ValueError:
use_random_value()
num_planets()
最后,try/catch
的{{1}}已经足够“简单”,因为它遵循EAFP [1] [2]模式。它显然会尝试将输入值转换为int(..)
,如果失败,您可以轻松处理错误。