繁体   English   中英

在 for 循环中使用未知数字或用户编号定义变量 - Noob CS Student

[英]Define variable in for loop with an unknown number or user number - Noob CS Student

我是一名 CS 菜鸟学生,试图使用 if/else 和 while for 运行程序。 我正在使用调试器并单步执行代码。 我可以看到我的“current_min”默认从 0 开始并且不会改变。 我知道我应该获取用户输入来定义最大/最小值,但是当我尝试将其放入 for 循环时,它会覆盖最大/最小值,最大和最小值是相同的数字。 使用当前代码,只要输入的数字小于 0,它就可以工作。这里最好的做法是什么?

# python 3.7
current_max = int()
current_min = current_max

print("How many integers would you like to enter?")
number_of_ints = int(input())  # number of integers user would like to compare
print("Please enter " + str(number_of_ints) + " integers")  # requesting x integers based on user input on previous line

for numints in range(number_of_ints):
    number = int(input())
    if number > current_max:
        current_max = number
    elif number < current_min:
        current_min = number

print("min: ", current_min)
print("max: ", current_max)

这里唯一的问题是您将current_mincurrent_max初始化为 0。因此,循环将检查是否为 0,并且仅在小于(或大于)0 时才更新值。

要修复,您应该将current_mincurrent_max设置为用户提供的第一个值:

number = int(input())
current_min = number
current_max = number

for numints in range(numints-1):
    # your logic from above.

你很亲密。 current_maxcurrent_min最初应该相等,并设置为循环之前输入的第一个数字。 请注意,在 Python 中,我们没有将变量声明为int s 或任何东西——您的前两行与说current_max = current_min = 0是一样的。 另请注意,作为input的参数,您可以指定一个字符串,该字符串充当自动写入标准 output 的提示符,没有尾随换行符(以便可以在写入字符串后立即输入)。

number_of_ints = int(input("How many integers would you like to enter? "))

number = int(input(f"Enter integer 1/{number_of_ints}: "))
cur_max = cur_min = number
for i in range(1, number_of_ints):
    number = int(input(f"Enter integer {i + 1}/{number_of_ints}: "))
    if number > cur_max:
        cur_max = number
    elif number < cur_min:
        cur_min = number

print("min: ", cur_min)
print("max: ", cur_max)

样本 session:

How many integers would you like to enter? 5
Enter integer 1/5: -5
Enter integer 2/5: -1
Enter integer 3/5: 5
Enter integer 4/5: 9
Enter integer 5/5: 0
min:  -5
max:  9

编码愉快!

问题就在一开始,可以在调试器中看到:

current_max = int()        # current_max is 0
current_min = current_max  # current_min is 0

假设我们输入 2。当前最小值是 0,当前最大值是 2。假设我们然后输入 3。当前最小值是零,当前最大值是 3。除非输入负值,否则当前最小值将保持为零。 此外,如果仅输入负值,则 current_max 将固定为零。

我要做的是添加一个 boolean 变量,最初为 false,以测试是否已经添加了一个值。 在第一个值上,我们将最小值和最大值更新为新值。

# python 3.7
current_max = int()
current_min = current_max#
got_value=False

print("How many integers would you like to enter?")
number_of_ints = int(input())  # number of integers user would like to compare
print("Please enter " + str(number_of_ints) + " integers")  # requesting x integers based on user input on previous line

for numints in range(number_of_ints):
    number = int(input())
    if not got_value:
        current_min=number
        current_max= number
        got_value=True
    else:
        if number > current_max:
            current_max = number
        elif number < current_min:
            current_min = number

print("min: ", current_min)
print("max: ", current_max)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM