您好我正在创建一个函数来返回一个字符串,具体取决于该字符串的值,即返回一个更高的数字。
答案 0 :(得分:1)
<强>更新强>
问题最初有代码,请参阅修订历史,这是对其原始代码的一些语法修正。
我看到以下几个语法问题,有更简单的方法,但如果你想知道你所拥有的问题,请参考其他答案以简化实现:
不要import randint
你应该这样做:
from random import randint
或:
import random
当你使用像randint
这样的东西时加上random
,即
random.randint(0, 45)
请勿使用+=
代替使用append
方法,如下所示:
a.append(randint(0,45))
您不想要random(a)
,而您可能需要choice
,因此请将其重写为:
random.choice(a)
答案 1 :(得分:1)
def gen_grade():
ranges = [(90,100),(80,89),(70,79),(0,69)]
odds = [0.45,0.35,0.15,0.05]
rnd_key = random.random()
for i in range(len(odds)):
if rnd <= sum(odds[:i]): return random.randint(*ranges[i])
num_grades_to_gen = 25
grades = [gen_grade() for i in range(num_grades_to_gen)]
可能就是我这样做的方式
答案 2 :(得分:1)
更简洁的方法是定义垃圾箱,只需要一个1-100的随机数。 然后条件检查:
i = randint(0,100)
if i in range(0,45):
return randint(90,100)
elif i in range(45,80):
return randint(80,89)
elif i in range(80,95):
return randint(70,79)
else:
return randint(0,69)
答案 3 :(得分:0)
这可能很简单,但并不多:
def autograder ():
bucket = random.randint (1, 100)
if bucket <= 45:
return randint (90, 100)
if bucket <= 80:
return randint (80, 89)
if bucket <= 95:
return randint (70, 79)
return randint (0, 69)