在Python中使用input()作为range()的参数

时间:2018-06-18 01:15:09

标签: python for-loop input

input()如何作为Python中range()的参数?

例如:

假设用户输入多个数字10和2或更多字面输入" 10 2"

for i in range(int(input())):
   try:
       a,b=map(int,input().split())
       print(a//b)
   except Exception as e:
       print("Error Code:",e)

for循环使用的范围是什么?是(0,10),(0,2)还是其他什么?或者,换句话说,如果用户输入多个数字,则该范围使用哪个数字作为上限?更一般地说,我试图理解for循环的目的以及为什么代码不能只是:

try:
    a,b=map(int,input().split())
    print(a//b)
except Exception as e:
    print("Error Code:",e)

3 个答案:

答案 0 :(得分:1)

input()值将存储为str

这一切都取决于用户输入的内容。您提供的代码非常糟糕,因为用户必须猜测要输入的内容以及。但逻辑的工作原理如下:

如果输入单个值,则int(input())会将该值转换为整数。例如,如果您输入2,则input()将保留字符串"2",而int("2")将产生整数2

如果您有多个值,则无法立即转换为int,因为int("2 10")到底是什么意思?这就是为什么你必须使用.split()来分隔许多奇异值中的这些多个值的原因。例如,如果您运行x = input()并输入2 10,则x将保留字符串"2 10"。现在,"2 10".split()生成字符串列表 ["2", "10"]

代码段map(int,input().split())将字符串列表转换为整数列表。它使用函数int 每个值映射到一个新值来进行转换。

现在已经建立,使用for更容易理解这在range循环中的工作方式。

根据文档,range类型可能在其构造函数中有一个参数 stop 或三个参数(start,stop [,step])。这些参数都是整数。

因此,input()的值必须符合此结构。如果您在输入中键入2 10,并尝试执行range("2 10"),则会收到错误消息。因为您正在传递类型为str一个参数。这就是为什么你必须先转换为integer。但是,正如我们刚刚讨论的那样,您无法立即将"2 10"转换为整数。这就是为什么你必须先split,然后将每个值转换为int,然后将这些作为参数传递给range()

总而言之,给定x = input()并输入2 10 的工作原理如下:

>>> int(x)
>>> range(x)

做什么工作:

>>> a,b=map(int,input().split())
>>> range(a, b)

答案 1 :(得分:-1)

  • 第一个input()将确定for循环的停止条件
  • 这意味着第一个input()确定执行for循环的次数
  • 其他输入()会将值分配给ab作为字符串
  • 以上相当于:

    stop = input()
    stop = int(stop)
    for i in range(stop):
       try:
           a,b=map(int,input().split())
           print(a//b)
       except Exception as e:
           print("Error Code:",e)
    
  • 但如果第一个input()被赋予"10 10",则代码会抛出一个错误,例如字符串无法转换为int

  • a,b=map(int,input().split())表示您希望输入由空格分隔的两个数字,这些输入将精确stop

答案 2 :(得分:-2)

当您想从输入中读取n行时使用此模式,例如输入为:

3
1 2
3 4 
5 6

第一个输入将确定需要运行for循环以读取所有行的次数。

对于单行输入,如" 10 2"你不需要使用循环。