为什么我的程序没有第二次循环运行?

时间:2018-02-27 18:16:09

标签: python for-loop

我正在尝试制作罢工和球的棒球比赛。 例如,如果random_number为'835'且user_input_number为'853',则strike_count应为1,ball_count应为2。 此功能仅用于计算击球和击球。 但该程序没有运行第二个for循环计数球。 所以我不能数球。

def get_strikes_or_ball(user_input_number, random_number):

    random_number_list = list(random_number)
    print("random_number_list: ", random_number_list)
    user_input_number_list = list(user_input_number)
    print("user_input_number_list: ", user_input_number_list)

    strike_count = 0

    for i in range(0, 3):
        print("first for")
        if random_number_list[i] == user_input_number_list[i]:
            strike_count += 1

    print("start")

    ball_count = 0

    for i in range(2, -1):
        print("second for")
        for k in range(1, 3):
            if random_number_list[i] == user_input_number_list[i-k]:
                ball_count += 1

    print("st, ball: ", strike_count, ball_count)
    result = [strike_count, ball_count]

    # ==================================
    return result

3 个答案:

答案 0 :(得分:1)

范围range(2, -1)为空。如果您想获得反转范围[-1, 2),可以使用reversed(range(-1, 2))

答案 1 :(得分:0)

Python的范围函数接受3个参数,其中两个是可选的。开始,停止和步骤。开始和步骤是可选的。 start的默认值为0,步骤的默认值为1.如果要向负方向步进,则需要为步骤传递-1。用range(2, -1)替换range(2, -1, -1)可以解决您的问题,这比使用reversed()函数更有效。

答案 2 :(得分:0)

在for循环参数中,python中有三个参数(开始,停止(排除数字),步骤)必须强制定义循环停止如果你没有指定它会得到你的第三个参数第二个参数,如果你必须减少循环的值,那么你必须将步骤设为-1,每次递减为值-1。

def get_strikes_or_ball(user_input_number, random_number):

random_number_list = list(random_number)
print("random_number_list: ", random_number_list)
user_input_number_list = list(user_input_number)
print("user_input_number_list: ", user_input_number_list)

strike_count = 0

for i in range(0, 3):
    print("first for")
    if random_number_list[i] == user_input_number_list[i]:
        strike_count += 1

print("start")

ball_count = 0

for i in range(2, -1,-1):
    print("second for")
    for k in range(1, 3):
        if random_number_list[i] == user_input_number_list[i-k]:
            ball_count += 1

print("st, ball: ", strike_count, ball_count)
result = [strike_count, ball_count]

# ==================================
return result