为什么这段代码在获得用户输入后不输出任何内容?

问题描述

num_1 = int(input("Enter the first number >>>>"))
num_2 = int(input("Enter the second number >>>>"))

if num_1 > num_2:
    for i in range(num_1,num_2+1):
        print(i)
else:
    for i in range(num_1,num_2,-1):
        print(i)

这段代码有什么问题?一旦用户输入这两个数字,程序就会停止并且不会打印任何内容

解决方法

你的逻辑是错误的。计数时需要检查num_1是否小于num_2。

ffmpeg -i input.mp4 -ar 8000 -ac 1 -s 352x288 -b:a 10.2k output.3g2
,
num_1 = int(input("Enter the first number >>>>"))
num_2 = int(input("Enter the second number >>>>"))

if num_1 < num_2:
    for i in range(num_1,num_2,+1):
        print(i)
else:
    for i in range(num_1,-1):
        print(i)
,

问题是您的第一个和第二个数字在范围内使用不正确。

范围首先取较小的数字,然后取较大的数字。您提供 if product = ProductFactory.create(prices__size=5) then get num1 > num2 这不是迭代,因为没有元素从 range(num1,num2) 跨越到 num1

num2
num_1 = int(input("Enter the first number >>>>"))
num_2 = int(input("Enter the second number >>>>"))

if num_1 < num_2:
    for i in range(num_1,num_2+1):
        print(i)
else:
    for i in range(num_1,-1):
        print(i)
,

要从高数到低数,您需要做的不仅仅是反转步骤。如果您有,例如:

range(1,10,-1)

这从 1 开始,并尝试向后计数。 1 到 9 之间没有数字从 1 开始倒数,所以你会得到一个空集合:

>>> list(range(1,-1))
[]

您还需要反转参数:

>>> list(range(10,1,-1))
[10,9,8,7,6,5,4,3,2]
,

您遇到错误是因为您以错误的方式使用了 range 函数。

range(start,stop[,step]) -> 范围对象

这里如果没有提供步长和起始值,那么默认值将起始值视为 0,并且小于结束值。同样,start 是包含值,end 是不包含的。

简而言之 range(start,end,step) -> start,start+step,start+step+step,....,end-1`

在您的代码中,

if num_1 > num_2:
   for i in range(num_1,num_2+1):
     # so on

这里你在检查,if num_1>num_2,对forrange(num_1. num_2)操作,所以由于step不是你定义的,所以默认取为1

现在 range(num_1,num_2) 变成 []num_1 > num_2 并且您无法通过将 1 添加到 num_1 来达到 num_2。即 list(range(num_1,num_2))[]

因为它是空的 for 循环不会工作并且它退出程序。当 num_1<num_2 时同样发生(以相反的方式)。

要解决此问题,您需要在范围内提供正确的值或更改 if 条件。

解决办法就是这样

if num_1 < num_2:
    for i in range(num_1,-1):
        print(i)