我必须以下列格式从用户那里获取输入,并从中创建一个嵌套列表.第一行是行数.
3
Sourav Das 24 M
Titan Das 23 M
Gagan Das 22 F
Run Code Online (Sandbox Code Playgroud)
嵌套列表应该是:
parentlist = [
['Sourav', 'Das', '24', 'M']
['Titan', 'Das', '23', 'M']
['Gagan', 'Das', '22', 'M']
]
Run Code Online (Sandbox Code Playgroud)
我写了以下代码:
k = int(raw_input())
parentlist = [[]]
for i in range(0, k):
str1 = raw_input()
parentlist[i] = str1.split()
Run Code Online (Sandbox Code Playgroud)
但是在进入第二行后它会给出一些索引超出范围的异常(如下所示).它给出此异常的代码有什么问题?
3
Sourav Das 24 M
Titan Das 23 M
Traceback (most recent call last):
File "nested.py", line 5, in <module>
parentlist[i] = str1.split()
IndexError: list assignment index out of range …Run Code Online (Sandbox Code Playgroud) python user-input nested-lists python-2.7 indexoutofrangeexception
问题是当输入数字非常大时,如何有效地找到给定范围内的完美正方形.我的解决方案是Time Limit Exceeded错误.我已经检查了以下链接,但它们没有解决我的问题:
- 完美广场上的Python程序
- 我如何检查一个数字是否是一个完美的正方形?
- 确定整数的平方根是否为整数的最快方法(我不知道如何实现Python中此链接中给出的解决方案).
问题是:
输入格式:第一行包含T,即测试用例的数量.随后是T测试用例,每个测试用例都在换行符中.每个测试用例包含两个空格分隔的整数,表示A和B.查找A和B范围内的所有完美正方形(包括两者).
输入示例:
2 3 9 17 24
我写的代码是:
import math
def is_perfect_square(n):
return n % n**0.5 == 0
t = int(raw_input())
for i in range(t):
numbers = map(int, raw_input().split())
count = 0
for j in xrange(numbers[0], numbers[1] + 1): # I also tried range() which gave memory error
if (is_perfect_square(j)):
count = count + 1
print count
Run Code Online (Sandbox Code Playgroud)
虽然此代码适用于较小的数字,但它Time limit exceeded为大输入提供了错误.
(注意:gmpy不是一个选项,因为代码必须在没有gmpy模块的在线编译器上运行)