Я хочу ввести ввод, чтобы остановить мою программу, но ValueError: неверный литерал для int () с основанием 10: "" только что появился - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу построить круг, в котором я могу продолжать вводить отметки и добавлять его в список до тех пор, пока я не введу «Enter», что означает «», и эта часть программы сломается и будет двигаться дальше.Но я застрял в этой части, у меня есть поиск по поводу ValueError, но кажется, что он не соответствует моей ситуации, или я просто не понимаю.Поэтому я прошу здесь, пожалуйста, помогите.

#display list
def dis_score():
    for item in score:
        print(item,end = " ")
    print()

#mainbody
score = []
while True:
    x = int(input("Enter the marks please:"))
    if (x>0):
        score.append(x)
    if (x == ""):
        break

print("before sorted:", end = " ")
dis_score()
n = len(score)-1

for i in range(0,n):
    for j in range(0,n-i):
        if (score[j]>score[j+1]):
            score[j],score[j+1]=score[j+1],score[j]
print("sorted:", end = " ")
dis_score()

И было то, что я ввел, и результат:
Пожалуйста, введите оценки: 80
Пожалуйста, введите оценки: 70
Пожалуйста, введите оценки: 85
Пожалуйста, введите оценки:

ValueErrorTraceback (most recent call last)  
<ipython-input-5-fa9f906bfcf8> in <module>()  
9 score = []  
10 while True:  
---> 11 x = int(input("Enter the marks please:"))  
12 if (x>0):  
13 score.append(x)  

ValueError: invalid literal for int() with base 10: ''

1 Ответ

0 голосов
/ 18 сентября 2018

Проблема в том, что int(input("Enter the marks please:")) всегда вызывает исключение (которое вы сообщаете), если входное значение не является допустимым целым числом.

Что вы можете сделать:

while True:
    s = input("Enter the marks please:")
    if s == "":
        break
    x = int(s)
    if x > 0:
        score.append(x)
...