Форум сайта python.su
0
Здравствуйте, я только начал изучать python и прошу вашей помощи:
import random def player_name(): name1 = input("Имя первого игрока: ") name2 = input("Имя второго игрока: ") return name1, name2 def dice(sides=6): random.randint(1, sides) def rolling_dices(): roll_dice = dice() if roll_dice == 1: print("Выпали кости номиналом в один ") if roll_dice == 2: print("Выпали кости номиналом в два ") if roll_dice == 3: print("Выпали кости номиналом в три ") if roll_dice == 4: print("Выпали кости номиналом в четыре ") if roll_dice == 5: print("Выпали кости номиналом в пять") if roll_dice == 6: print("Выпали кости номиналом в шесть") roll_dice2 = dice() if roll_dice2 == 1: print("и один") if roll_dice2 == 2: print("и два") if roll_dice2 == 3: print("и три") if roll_dice2 == 4: print("и четыре") if roll_dice2 == 5: print("и пять") if roll_dice2 == 6: print("и шесть") return roll_dice, roll_dice2 def results(): print("Игроку", name1, roll_dice, roll_dice2) def results2(): print("Игроку", name2, roll_dice, roll_dice2) def main(): player_name() rolling_dices() results() rolling_dices() results2() main()
Отредактировано Shepard_Commander (Июль 7, 2015 17:21:13)
Офлайн
568
def results(): print("Игроку", name1, roll_dice, roll_dice2)
Офлайн
0
FishHookСпасибо, но как можно максимально эффективно использовать переменные с другой функции?
Офлайн
568
Shepard_CommanderНикак. Функции - обособленные блоки кода, переменные определенные внутри функций живут только во время выполнения функции. Это концептуальное свойство. В разных языках есть всякие нюансы типа статических переменных, но одно неизменно: переменные определенные внутри функции снаружи недоступны. Представляете, что будет, если можно будет изменить внутреннюю переменную функции? Функция будет возвращать непредсказуемый результат. Такое программирование лично я в гробу бы видал.
Спасибо, но как можно максимально эффективно использовать переменные с другой функции?
Офлайн
88
Тут нужны объекты.
import random class YourGreatGame: def __init__(self): pass def player_name(self): self.name1 = input("Имя первого игрока: ") self.name2 = input("Имя второго игрока: ") return self.name1, self.name2 def dice(self, sides=6): return random.randint(1, sides) def rolling_dices(self): self.roll_dice = self.dice() if self.roll_dice == 1: print("Выпали кости номиналом в один ") if self.roll_dice == 2: print("Выпали кости номиналом в два ") if self.roll_dice == 3: print("Выпали кости номиналом в три ") if self.roll_dice == 4: print("Выпали кости номиналом в четыре ") if self.roll_dice == 5: print("Выпали кости номиналом в пять") if self.roll_dice == 6: print("Выпали кости номиналом в шесть") self.roll_dice2 = self.dice() if self.roll_dice2 == 1: print("и один") if self.roll_dice2 == 2: print("и два") if self.roll_dice2 == 3: print("и три") if self.roll_dice2 == 4: print("и четыре") if self.roll_dice2 == 5: print("и пять") if self.roll_dice2 == 6: print("и шесть") return self.roll_dice, self.roll_dice2 def results(self): print("Игроку", self.name1, self.roll_dice, self.roll_dice2) def results2(self): print("Игроку", self.name2, self.roll_dice, self.roll_dice2) def main(): game = YourGreatGame() game.player_name() game.rolling_dices() game.results() game.rolling_dices() game.results2() if __name__ == '__main__': main()
Офлайн
568
ShamanТопикстартеру до объектов еще очень далеко, не забивайте человеку голову раньше времени.
Тут нужны объекты.
Офлайн
88
Пусть ориентируется.
Офлайн