print('when asked for first two numbers type 27')
response = int(input('first two numbers of the list? '))
start_list = list(response)
print('first two numbers of the list are', start_list)
if start_list[0] < start_list[1]:
new = start_list[0] + 1
start_list.insert(2, new)
print('first algo run gives', start_list)
我的猜测是您希望用户输入两个用空格分隔的整数。这绝对不是你会做的事。首先,在看起来像
int
的输入上应用 "123 456"
并不是正确的方法。您需要 str.split
,然后将每个元素转换为整数。常见的习语是:
x, y = map(int, input('Enter two numbers: ').split())
Enter two numbers: 123 456
print(x, y)
(123, 456)
在此之后,您不妨将您的号码放入列表中:
start_list = [x, y]
或者,如果您不想解压
map
结果,您可以使用:
start_list = list(map(int, input('Enter two numbers: ').split()))
如果您使用的是 python2,请省略
list
位。
请注意,如果用户输入的内容多于或少于两个以空格分隔的数字,则解包不是一个好主意。在这种情况下,您最好一开始就不要解压结果。
如果您想接受 2 个数字,您可能需要使用 raw_input
response = raw_input('first two numbers of the list? ') # this will give you a string like '1 2'
然后你想将其转换为整数列表
start_list = [int(x) for x in response.split()]
那么你的其余代码应该可以正常工作
您可以对制作列表的方式进行一些修改
print('when asked for first two numbers type 27')
response = input('first two numbers of the list? ')
start_list = list(map(int, response.split()))
print('first two numbers of the list are', start_list)
if start_list[0] < start_list[1]:
new = start_list[0] + 1
start_list.insert(2, new)
print('first algo run gives', start_list)
输出
when asked for first two numbers type 27
first two numbers of the list? 1 10
first two numbers of the list are [1, 10]
first algo run gives [1, 10, 2]
使用 Coldspeed 的建议,并认识到
split()
返回字符串列表...
然后记得将字符串转换回 int,这似乎解决了我系统上的问题:
start_list = list(input('Enter two numbers: ').split())
print('first two numbers of the list are', start_list)
if start_list[0] < start_list[1]:
new = int(start_list[0]) + 1 # need to convert first string to an int with a call to int()
start_list.insert(2, new)
print('first algo run gives', start_list)
我发现你正在学习Python。 这是我的建议:
让用户输入恰好两个数字的最佳方法是提示他两次。 函数
input
返回一个字符串,您可以将其转换为 int (就像您所做的那样)。
print('when asked for first two numbers enter 2 and 7')
response1 = int(input('Enter the first integer'))
response2 = int(input('Enter the second integer'))
将这两个值放入一个列表中。 最简单的方法是使用
[...]
语法:
start_list = [response1, response2]
print('first two numbers of the list are', start_list)
现在附加第三个元素。
if start_list[0] < start_list[1]:
new_value = start_list[0] + 1 # don't use the name new
start_list.append(new_value) # append always adds it at the end
print('first algo run gives', start_list) # what's an algo?
名称
new
并不是一个好的变量名称,因为它有特殊的含义。
如果您知道希望该值位于列表末尾,请使用
append
而不是 insert
。
我认为错误在于这段代码:
start_list = list(response)
您应该将您的回复放在 [] 之间,例如:
start_list = list([response])