Member 12939713 Ответов: 1

Как я могу получить предметный указатель, список нашего ассортимента ошибки на Python


#Imports Time
import random
import time

freehours = []
nameslist = []
hoursbookedlist = []

for student in range(7):
    name = input("Enter students name ")
    hoursbooked = int(input("Enter number of hours booked for the students "))
    while (hoursbooked <10):
        print("Please re-enter number of hours booked: ")
        hoursbooked = int(input("Please enter the number of hours that have been booked for stundent1 "))
        if hoursbooked > 10 and hoursbooked < 15:
            freehours.append(1)
        elif int(hoursbooked >=15):
            freehours.append(2)

    nameslist.append(name)
    hoursbookedlist.append(hoursbooked)

print ("student \t hoursbooked \t freehours ")
for i in range(7):
    print(nameslist[i],"\t","\t",hoursbookedlist[i],"\t","\t",freehours[i])


Что я уже пробовал:

Я перепробовал все

Member 12939713

как же мне тогда это исправить

NotPolitcallyCorrect

"Я все перепробовал", а вы, очевидно, нет. Вы не пытались задать вопрос или описать проблему с кодом, который вы только что сбросили сюда.

Member 12939713

хорошо хорошо тогда вы можете помочь

NotPolitcallyCorrect

Я могу попробовать. У вас есть вопрос или проблема?

1 Ответов

Рейтинг:
1

Thomas Daniels

Проблема в том, что ваш while- петля никогда не вводится, если hoursbooked больше или равно 10.

Также обратите внимание, что ваше состояние while hoursbooked < 10, но ваши if-операторы плохо справляются с входными данными 10. А вам нужно elif hoursbooked >= 15 скорее, чем elif int(hoursbooked >= 15): последний преобразует логическое значение в целое число, и вам не нужно это преобразование, потому что hoursbooked уже является целым числом.

Ваш код выдаст ValueError, если входные данные не являются целыми числами. Я рекомендую прочитать это: 8. ошибки и исключения-документация Python 3.6.0[^]

Чтобы устранить эти проблемы, вы можете сделать это, чтобы заменить while- loop (следующий код не улавливает потенциальные ошибки ValueErrors; я оставлю это для вас):

while True:
    hoursbooked = int(input("Enter number of hours booked for the students (at least 10) "))
    if hoursbooked >= 10 and hoursbooked < 15:
        freehours.append(1)
        break
    elif hoursbooked >= 15:
        freehours.append(2)
        break

Один while True цикл будет продолжаться бесконечно, если ему никогда не скажут остановиться. Если ваша программа входит в if или elif блок, мы знаем, что вход правильный. Итак, в этом блоке мы поместили break оператор, который является сигналом к выходу из цикла. Если блоки if или elif не вводятся, входные данные меньше 10, и код внутри цикла выполняется снова.

Полный код будет следующим:
import random
import time

freehours = []
nameslist = []
hoursbookedlist = []

for student in range(7):
    name = input("Enter students name ")
    while True:
        hoursbooked = int(input("Enter number of hours booked for the students (at least 10) "))
        if hoursbooked >= 10 and hoursbooked < 15:
            freehours.append(1)
            break
        elif hoursbooked >= 15:
            freehours.append(2)
            break
    nameslist.append(name)
    hoursbookedlist.append(hoursbooked)

print ("student \t hoursbooked \t freehours ")
print(nameslist)
print(freehours)
print(hoursbookedlist)
for i in range(7):
    print(nameslist[i],"\t","\t",hoursbookedlist[i],"\t","\t",freehours[i])


Thomas Daniels

это происходит в вашем цикле for

Member 12939713

пожалуйста, вы можете просто показать мне, как это сделать, так как я не могу, я пытался все утро, и я так нервничаю и расстраиваюсь из-за этого

Thomas Daniels

Но что я должен тебе показать? Вам нужно только заменить свой цикл while на мой цикл while, это работает.

Member 12939713

можете ли вы просто отправить весь законченный код, так как я так запутался

Thomas Daniels

Смотрите мой обновленный ответ.

Member 12939713

как мне сложить списки забронированных и свободных часов вместе, чтобы получить окончательный список под названием totalhoursbooked??

Thomas Daniels

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