2016-07-20 6 views
-1

Доброе утро,создание символа строки в качестве параметра по умолчанию для функции

На данный момент я пытаюсь создать гистограмму для класса. Я сейчас развиваю свое мастерство, поскольку я занимаюсь этим только 2 месяца, и, насколько я знаю, это веб-сайт для профессионалов, и, пожалуйста, вы извините мое отсутствие понимания.

def histo_print(times, dicerand, symbol='*'): 
    print('%ds: %s' % (times, (dicerand * symbol))) 

Вопрос:

  1. Можно ли использовать строку как значение по умолчанию для "символ"?

  2. Было бы лучше, назначив символ строки по умолчанию переменной «символ» за пределами цикла? Затем поместите функцию ввода после ее назначения?

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

Это весь код:

def histo_print(times,dicerand,symbol): 
    if symbol == none 
    print ('%ds: %s' % (times,(dicerand * symbol))) 

def rand(user_input): 
    number = 0 
    while number != user_input: 
     die1 = random.randint(1, 6) 
     die2 = random.randint(1, 6) 
     roll_total = die1 + die2 


return roll_total 

"""Introduction""" 
print('Welcome to the Dice roll histogram.') 

if num_rolls >= 1: 
    """Adds one to user input because the for loop starts at one.""" 
    num_rolls += 1 
    """Optional Secondary input based on if the number entered is greater than zero.""" 
    character = str(input('Please enter character:\n')) # Additional input for user choice. 
    """Unnecessary, just looks nice.""" 
    print('Dice roll histogram:\n') 
    for i in range(1,num_rolls): 
     rand(num_rolls) 

     #Output 
     histo_print(i, rand(num_rolls),character) 

else: 
    print('Invalid number of rolls. Try again.') 
+0

О каком цикле вы говорите? – polku

+0

@polku Я использую "для" цикла --- для г в диапазоне (1, num_rolls): RAND (num_rolls) #output histo_print (I, RAND (num_rolls), символ) –

+0

сообщение The кусок кода, из которого вызывается функция, и укажите желаемый результат. Веб-сайт не только для профессионалов. –

ответ

1

Чтобы ответить на ваш первый вопрос, да. Да, вы можете абсолютно использовать строковое значение для передачи как «по умолчанию» в своей функции. Для начала прочитайте здесь, чтобы избежать общих ошибок:>http://docs.python-guide.org/en/latest/writing/gotchas/. В вашем случае я бы сохранил это как таковое.

Теперь для вашего следующего вопроса, в то время как вы можете абсолютно поместить это значение по умолчанию в цикл for. Однако эмпирическое правило заключается в том, чтобы для удобства чтения поместить эти значения по умолчанию в функции и переопределить по мере необходимости.

+1

Я вижу эту идиому со значением по умолчанию «Нет» время от времени, но я думал, что это должно предотвратить пресловутое «удивительное» поведение с изменяемыми аргументами по умолчанию.Поскольку строки неизменны, я не понимаю мотивацию в этом случае. Например, функция 'print' имеет параметры по умолчанию:' sep = '', end = '\ n'' –

+1

Строки неизменяемы - строка как аргумент по умолчанию отлично. –

+0

Оба вы сделали действительные баллы. Не нужно вводить мое циничное поведение в неизменяемые объекты. – Carlos

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