2017-02-08 5 views
2

Мне около 5 недель в моем самом первом классе программирования, и это все еще немного сложно для меня. Мне было интересно, сможет ли кто-нибудь помочь мне.Я не могу выбраться из цикла этой программы на python

Я думаю, что я не могу понять, что я делаю. Неправильно, после завершения ввода команд в течение 7 дней он возвращается к первому дню. Это моя первая публикация здесь, поэтому я извиняюсь, если я включил почти весь код, я просто делаю это для ссылки, чтобы увидеть, может ли быть что-то выше нижних циклов while, из-за чего моя программа повторяется сама. Спасибо за любую помощь заранее!

keepgoing = "y" 

while keepgoing == "y": 


    while True: 
     try: 
      sundaySales = int(input("Enter Sunday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 

      break 

    while True: 
     try: 
      mondaySales = int(input("Enter Monday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 

      break 

    while True: 
     try: 
      tuesdaySales = int(input("Enter Tuesday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 

      break 

    while True: 
     try: 
      wednesdaySales = int(input("Enter Wednesday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 

      break 

    while True: 
     try: 
      thursdaySales = int(input("Enter Thursday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 

      break 

    while True: 
     try: 
      fridaySales = int(input("Enter Friday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 

      break 

    while True: 
     try: 
      saturdaySales = int(input("Enter Saturday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
     return True 
Size=7 

Sales=[sundaySales, mondaySales, tuesdaySales, wednesdaySales, thursdaySales, fridaySales, saturdaySales]     

totalWeeklySales = sundaySales+mondaySales+tuesdaySales+wednesdaySales+thursdaySales+fridaySales+saturdaySales 
sentence = "This week's total sales are ${} ". format(totalWeeklySales) 
print (sentence) 
import totalOutcome 
totalOutcome.totalOutcome(totalWeeklySales) 

keepGoing = input("Do you want to run this again? (Enter y)= ") 

if keepGoing != "y": 
    print ("Great job this week!") 
+1

Нет никакого способа, чтобы приведенный выше код работал для вас без ошибок. Пожалуйста, убедитесь, что ваше задание соответствует вашей фактической проблеме. И после того, как вы это сделаете: вам нужно вырваться из замкнутого цикла while, чего вы, кажется, никогда не делаете. –

+0

Измените свой первый 'While' на' while'. Не могли бы вы правильно отложить свою программу? – Fabich

+0

'While keepgoing ==" y ":' недействителен Python (обратите внимание на заглавную букву), и ни один из тела цикла не имеет отступов. –

ответ

1

Я просто изменили свой код и повторно отформатирован немного:

keepgoing = "y" 

while keepgoing == "y": 

    while True: 
     try: 
      sundaySales = int(input("Enter Sunday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
      break 

    while True: 
     try: 
      mondaySales = int(input("Enter Monday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
      break 

    while True: 
     try: 
      tuesdaySales = int(input("Enter Tuesday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
      break 

    while True: 
     try: 
      wednesdaySales = int(input("Enter Wednesday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
      break 

    while True: 
     try: 
      thursdaySales = int(input("Enter Thursday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
      break 

    while True: 
     try: 
      fridaySales = int(input("Enter Friday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
      break 

    while True: 
     try: 
      saturdaySales = int(input("Enter Saturday's total sales: $")) 
     except ValueError: 
      print("Sorry, I didn't understand that.") 
      continue 
     else: 
      break 
    Size = 7 

    Sales = [sundaySales, mondaySales, tuesdaySales, 
      wednesdaySales, thursdaySales, fridaySales, saturdaySales] 

    totalWeeklySales = sundaySales + mondaySales + tuesdaySales + \ 
     wednesdaySales + thursdaySales + fridaySales + saturdaySales 
    sentence = "This week's total sales are ${} ". format(totalWeeklySales) 
    print (sentence) 
    import totalOutcome 
    totalOutcome.totalOutcome(totalWeeklySales) 

    keepgoing = input("Do you want to run this again? (Enter 'y')= ") 

    if keepgoing != "y": 
     print ("Great job this week!") 

Обратите внимание, что:

  • Именование переменных не хорошо, это лучше использование sunday_sales чем sundaySales, sales_list чем Sales и т.д. Naming Conventions
  • В конце кода Saturday sales есть return True, на самом деле это должно быть break. (Кстати, while True действительно страшная практика, пожалуйста, не используйте его, если это возможно) Why while(true) is bad practice?
  • Код отступа не является правильным
  • переменной не соответствует: keepgoing против keepGoing
  • Когда вход для Do you want to run this again? (Enter 'y')=, пожалуйста, убедитесь, строка, введенная с цитатой "abc" или 'abc', не abc, в противном случае был бы ошибка возникает, так как Python относится ввод как raw_input
  • Как отметил @Lord темно, импорт в цикле плохо, импортируйте в начале файла или определение функции (если есть циклический импорт) Python Importing и Circular (or cyclic) imports in Python
+0

Спасибо, это некоторые удивительные советы, которые я искренне ценю за помощь каждого! –

1

Вот несколько советов, чтобы улучшить ваш код:

  • Не используйте return True вне функции. Вы можете использовать только return, чтобы оставить функцию. Чтобы отказаться от использования цикла while break

  • Импортируйте пакет в начале вашей программы (переместите import totalOutcome в начало), чтобы он не импортировался в каждом цикле.

  • Вы должны указать свой конечный код внутри цикла while. Прямо сейчас вы никогда не меняете значение keepgoing, поэтому цикл будет циклическим навсегда:

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

Вот более компактная версия этого кода:

days=['Sunday','Monday','Tuesday','Wednesday','Thurday','Friday','Saturday'] 

while True: 
    Sales = [] 
    for day in days: 
    while True: 
     try: 
     daylySales = int(input("Enter "+day+"'s total sales: $")) 
     Sales.append(daylySales) 
     except ValueError: 
     print("Sorry, I didn't understand that.") 
     continue 
     else: 
     break 

    totalWeeklySales = sum(Sales) 
    sentence = "This week's total sales are ${} ". format(totalWeeklySales) 
    print (sentence) 

    keepGoing = input("Do you want to run this again? (Enter y)= ") 

    if keepGoing != "y": 
     print ("Great job this week!") 
     break 

Я пытался делать держать вас переменные назвать как можно больше.

Смежные вопросы