0

我是 Python 新手。尝试学习它。这是我的代码:

import sys
my_int=raw_input("How many integers?")
try:
    my_int=int(my_int)
except ValueError:
    ("You must enter an integer")
ints=list()
count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False
    try:
        new_int=int(new_int)
    except:
        print("You must enter an integer")
    if isint==True:
        ints.append(new_int)
        count+=1

代码正在执行,但循环总是重复,不允许我输入第二个整数。

输出:

How many integers?3
Please enter integer1:1
Please enter integer1:2
Please enter integer1:3
Please enter integer1:

我能知道我的代码有什么问题吗?谢谢

4

3 回答 3

4

您的代码的问题是它isint永远不会改变并且总是False,因此count永远不会改变。我猜你的意图是当输入是一个有效的整数时,增加count; 否则,什么也不做count

这是代码,isint不需要标志:

import sys

while True:
    my_int=raw_input("How many integers?")
    try:
        my_int=int(my_int)
        break
    except ValueError:
        print("You must enter an integer")
ints=list()
count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    try:
        new_int=int(new_int)
        ints.append(new_int)
        count += 1
    except:
        print("You must enter an integer")
于 2016-12-16T05:30:35.037 回答
1

在断言输入是 int 之后需要更新 isint

更新: 第一次尝试除外还有另一个问题。如果输入不是整数,程序应该能够退出或带你回到开始。以下将继续循环,直到您先输入一个整数

ints=list()

proceed = False
while not proceed:
    my_int=raw_input("How many integers?")
    try:
        my_int=int(my_int)
        proceed=True
    except:
        print ("You must enter an integer")

count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False
    try:
        new_int=int(new_int)
        isint=True
    except:
        print("You must enter an integer")
    if isint==True:
        ints.append(new_int)
        count+=1
于 2016-12-16T05:14:27.187 回答
0

更好的代码:

import sys
my_int=raw_input("How many integers?")
try:
    my_int=int(my_int)
except ValueError:
    ("You must enter an integer")
ints = []


for count in range(0, my_int):

    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False

    try:

        new_int=int(new_int)
        isint = True

    except:

        print("You must enter an integer")

    if isint==True:
        ints.append(new_int)
于 2016-12-16T05:41:50.243 回答