RomissevdСпасибо. Громоздко выходит. Думал можно в меньше строк можно.
RomissevdСпасибо. Громоздко выходит. Думал можно в меньше строк можно.
RuslСделай цикл, будет негромоздко
Громоздко выходит
#Dice roller program. import random def dice_roller(): # main function dice_qty = int(input('How many dices do you want to roll ?')) # getting amount of dices dices= {} for n in range (1, (dice_qty + 1)): # finding out how many side ech dice is if n == 1: sides = int(input('How many sides is your first dice ?')) elif n == dice_qty: sides = int(input('How many sides is your last dice ?')) else: sides = int(input('How many sides is your next dice ?')) dices[n] = sides # forming a dictionary, where key is an index number of a dice and a value is a number of sides def roll_dice(dices,n):# 'rolling function' if n > dice_qty: #return statement. If we roll all dices - exit return else: # else roll dice roll = random.randint(1, dices[n]) print(' Your ' + str(n) + ' dice ( ' + str(dices[n]) + ' sides ) has rolled ' + str(roll) + ' ! ' )# printing out results n = n + 1 roll_dice(dices,n) #rolling next dice roll_dice(dices,1) dice_roller ()
FishHookСпасибо, почитаю.
Конкатенацию строк забыть. Открыть для себя .format
FishHookДа я сам не знаю пока. Хотелось, чтобы можно было “бросить” сколько угодно костей со сколько угодно гранями. Поэтому и написал рекурсивную функцию на бросок и вывод результата.
Архитектурно как-то не вполне понятен мотив организовывать вложенные функции, если вы все равно передаете локальные переменные в замыкание. Зачем так?
RetterhalmРекурсию то я и не заметил. Рекурсия здесь - как собаке пятая нога, лишнее вообще и более того вредное, никогда не применяйте рекурсию без обоснованной алгоритмической необходимости. Рекурсия - это хороший способ переполнить стек вызовов и уронить программу.
Поэтому и написал рекурсивную функцию на бросок и вывод результата.
FishHookСпасибо, приму к сведению! (Не так давно читал про неё, наверное поэтому везде пихаю
Рекурсию то я и не заметил. Рекурсия здесь - как собаке пятая нога, лишнее вообще и более того вредное, никогда не применяйте рекурсию без обоснованной алгоритмической необходимости. Рекурсия - это хороший способ переполнить стек вызовов и уронить программу.
print(' Your {} dice ( {} sides ) has rolled {} !'.format(n, dices[n], roll))# printing out results
#Dice roller program. import random dice_qty = int(input('How many dices do you want to roll ?')) # getting amount of dices dices= {} for n in range (1, (dice_qty + 1)): # finding out how many side ech dice is if n == 1: sides = int(input('How many sides is your first dice ?')) elif n == dice_qty: sides = int(input('How many sides is your last dice ?')) else: sides = int(input('How many sides is your next dice ?')) dices[n] = sides # forming a dictionary, where key is an index number of a dice and a value is a number of sides n = 1 while n < dice_qty + 1: roll = random.randint(1, dices[n]) print(' Your {} dice ( {} sides ) has rolled {} !'.format(n, dices[n], roll))# printing out results n = n + 1
if n == 1: sides = int(input('How many sides is your first dice ?')) elif n == dice_qty: sides = int(input('How many sides is your last dice ?')) else: sides = int(input('How many sides is your next dice ?'))
if n == 1: message = 'How many sides is your first dice ?' elif n == dice_qty: message = 'How many sides is your last dice ?' else: message = 'How many sides is your next dice ?' sides = int(input(message))
RetterhalmНенормально вообще давать переменным ничего не значащие имена
Это нормально так переопределять значения или лучше(чтобы не путаться) определить другую переменную?