python-3.x 如何从用户输入的序列中生成一个不允许负数的整数?

nxagd54h  于 2023-03-31  发布在  Python
关注(0)|答案(4)|浏览(123)

我试图编写一个程序,要求用户连续输入一个数字,直到用户输入-1为止。在程序结束后,我希望输入的数字按顺序显示为一个整数。
程序按照上面的描述做了所有的事情,除了它还在整数列表中注册了-1,并将其放在最后的单个整数中。
对python来说很新,所以我相信我可能错过了一些相当基本的东西。
例如:如果我写输入'5','6','7','8','-1'
它给我输出:5678-1当我试图得到:5678

x = eval(input('Type a number: '))
print('Write -1 to stop.')

seq = []

seq.append(x)

while x != -1:
x = eval(input('Type a number: '))
seq.append(x)

for i in seq:
print(i, end='')

我尝试在循环中放入if和else,以使x == -1的情况例外,但也得到了相同的结果。

mlmc2os5

mlmc2os51#

如果第一个输入是-1,则以下代码不计数。

seq =[]
print('Write -1 to stop.')

x = eval(input('Type a number: '))
seq.append(x)

while x != -1:
  x = eval(input('Type a number: '))
  if x != -1:
    seq.append(x)

for i in seq:
  print(i, end='')

这将产生

5678

如您所要求。

k3bvogb1

k3bvogb12#

  • eval可能不是将字符串解析为整数的最佳方法
  • 当然它包括-1 -就像你的代码一样

1.通过eval转换为整数
1.存储在seq
1.只有这样,循环才会以x==-1再次进行并结束

  • 这应该是可行的,但是应该考虑对输入错误(例如字母)的处理。
while True:
    x = int(input('Type a number: '))
    if x == -1:
        break
    seq.append(x)
m0rkklqb

m0rkklqb3#

问题如下:

while x != -1:
    x = eval(input('Type a number: '))
    seq.append(x)

你把x加到序列中,即使它是-1,因为你在加了while之后才检查。
试试这样的方法:

while x != -1:
    x = eval(input('Type a number: '))
    if x != -1:
        seq.append(x)

您也可以将整个代码更改为:

print('Write -1 to stop.')

seq = []

while True:
    x = eval(input('Type a number: '))
    if x != -1:
        seq.append(x)
    else:
        break

for i in seq:
    print(i, end='')

通过这种尝试,您不需要在循环之前初始化x,只需要创建空序列。

knsnq2tg

knsnq2tg4#

x = ""
while True:
        int_input = input()                                                         
        if(int(int_input) < 0):
                break
        else:
                x += int_input

print(x)

相关问题