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)
答案 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循环的次数a
和b
作为字符串以上相当于:
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"你不需要使用循环。