Увеличение значения в операторе печати - PullRequest
0 голосов
/ 14 января 2020

Я хотел бы сжать этот раздел кода ниже.

    Selector()
    print(week[0], "A:", x, "B:", y, "C:", z)
    Selector()
    print(week[1], "A:", x, "B:", y, "C:", z)
    Selector()
    print(week[2], "A:", x, "B:", y, "C:", z)
    Selector()
    print(week[3], "A:", x, "B:", y, "C:", z)
    Selector()
    print(week[4], "A:", x, "B:", y, "C:", z)
    Selector()
    print(week[5], "A:", x, "B:", y, "C:", z)
    Selector()
    print(week[6], "A:", x, "B:", y, "C:", z)

Я хотел бы сделать простой l oop, чтобы вызвать функцию, затем оператор print и увеличить значение в "week []" 1 за каждый раз, когда она печатается.

Полный код:

import random
import calendar

week = []
for i in calendar.day_name:
  week.append(i)

listA = ["Patsy", "Spam", "Eggs", "Foo"]

def Selector ():
  listB = [i for i in listA]

  random.shuffle(listB)
  for i in listB:
    global x
    x = i
    listB.remove(i)
    break

  random.shuffle(listB)
  for i in listB:
    global y
    y = i
    listB.remove(i)
    break

  random.shuffle(listB)
  for i in listB:
    global z
    z = i
    listB.remove(i)
    break

Selector()
print(week[0], "A:", x, "B:", y, "C:", z)
Selector()
print(week[1], "A:", x, "B:", y, "C:", z)
Selector()
print(week[2], "A:", x, "B:", y, "C:", z)
Selector()
print(week[3], "A:", x, "B:", y, "C:", z)
Selector()
print(week[4], "A:", x, "B:", y, "C:", z)
Selector()
print(week[5], "A:", x, "B:", y, "C:", z)
Selector()
print(week[6], "A:", x, "B:", y, "C:", z)

Что дает желаемый результат:

Monday A: Spam B: Patsy C: Eggs
Tuesday A: Eggs B: Foo C: Spam
Wednesday A: Spam B: Patsy C: Eggs
Thursday A: Eggs B: Patsy C: Foo
Friday A: Spam B: Foo C: Patsy
Saturday A: Patsy B: Eggs C: Spam
Sunday A: Patsy B: Foo C: Spam

Я пробовал это l oop:

def schedule():
  for int in week [0]:
    if int < 7:
      print(week[0], "A:", x, "B:", y, "C:", z)

Я получаю: TypeError: '<' не поддерживается между экземплярами 'str' и 'list'. Я понятия не имею, где go отсюда. </p>

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

Спасибо!

1 Ответ

1 голос
/ 14 января 2020

Вы пытаетесь перебрать первый элемент списка, а не сам список. Кроме того, вам не нужен индекс вообще; итерирование по списку дает вам сами элементы.

def schedule():
    for w in week:
        Selector()
        print(w, "A:", x, "B:", y, "C:", z)

Хотя вы можете значительно упростить это. Если вы просто хотите три случайных элемента из listA, сделайте

for w in week:
    x, y, z = random.sample(listA, 3)
    print(f"{w} A: {x} B: {y} C: {z}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...