Найти - Пользователи
Полная версия: return странно работает
Начало » Python для новичков » return странно работает
1
virom
Привет!

Помогите пожалуйста разобраться с функцией.
Если выбрать любой пункт, то потом, какой бы пункт не выбирал, все равно будет выполняться первый выбранный.
Поясните где не прав?

 Denga = 100
print("правила игры:")
print("вам нужно получить 10 алмазов и 20 изумрудов")
print("на старте у вас 100 дененг")
z = input("введите имя")
price_izumrud = int(60)
price_almaz = int(120)
price_za_reklamu = int(5)
tarif = 0
print("ваши деньги :",Denga)
def qq_qq():
    print('1-купить изумруд', price_izumrud, "денег")
    print('2-купить алмаз' , price_almaz, "денег")
    print('3-посмотреть рекламу +', price_za_reklamu, "денег")
    print('4-улучшить тариф-500 денег')
    print('5-выход')
    q = input('Ваш выбор:') 
    return q
q = qq_qq()
while q != "5":
#Покупка изумруда
    if q == "1":
        if Denga >= 60:
            Denga -= 60
            print(z, ",вы приобрели изумруд, у вас осталось" ,Denga , "денег")
            print(1)
            qq_qq()
        else:
            print(z,",А денег то не хватает! У вас только",Denga,"А надо 60 денег")
            print(2)
            qq_qq()
#Покупка алмаза
    elif q == "2":
        if Denga >= 120:
            Denga -= 120
            print(z, ",вы приобрели алмаз, у вас осталось" ,Denga , "денег")
            print(3)
            qq_qq()
        else:
            print(z,",А денег то не хватает! У вас только",Denga,"А надо 120 денег") 
            print(4)
            qq_qq()
# Реклама    
    elif q == "3":
        Denga += 5
        print(z, ",вы посмотрели рекламу, у вас стало" ,Denga , "денег")
        print(5)
        qq_qq()
#Тариф
    elif q == '4':
        if Denga >= 500:
            Denga -=500
            print("вы улучшили свой тариф")
            tarif +=1
#Ошибка ввода
    else:
        print(z, ",вы ввели фигню")
        print(6)
        qq_qq()
Rodegast
 q = qq_qq()
while q != "5":
   ....
       q = qq_qq()
virom
Спасибо!
Добавил после каждого вызова функции q = qq_qq(), стало вести себя иначе:

  1. Первый вызов любого меню отрабатывает нормально.
    Второй - просто выводит меню повторно
    Третий - выводит требуемое меню как полагается.

По прежнему не работает как ожидалось


 Denga = 600
print("правила игры:")
print("вам нужно получить 10 алмазов и 20 изумрудов")
print("на старте у вас 100 дененг")
print("на стандартном тарифе стоимость самая высокая")
print("на каждом последующем цена будет уменьшаться на 30%")
z = input("введите имя")
price_izumrud = int(60)
price_almaz = int(120)
price_za_reklamu = int(5)
tarif = 0
print("ваши деньги :",Denga)
def qq_qq():
    print('1-купить изумруд', price_izumrud, "денег")
    print('2-купить алмаз' , price_almaz, "денег")
    print('3-посмотреть рекламу +', price_za_reklamu, "денег")
    print('4-улучшить тариф-500 денег')
    print('5-выход')
    q = input('Ваш выбор:') 
    return q
    print('отработали def')
q = qq_qq()
while q != "5":
#Покупка изумруда
    if q == "1":
        if tarif == 0:
            if Denga >= price_izumrud:
                Denga -= price_izumrud
                print(z, ",вы приобрели изумруд, у вас осталось" ,Denga , "денег")
                qq_qq()
                q = qq_qq()
            else:
                print(z,",А денег то не хватает! У вас только",Denga,"А надо 60 денег")
                print(2)
                qq_qq()
                q = qq_qq()
#        if tarif == 1:
#            price_izumrud *=0.7
            if Denga >= price_izumrud:
                Denga -= price_izumrud
                print(z, ",вы приобрели изумруд, у вас осталось" ,Denga , "денег")
                qq_qq()
                q = qq_qq()
            else:
                print(z,",А денег то не хватает! У вас только",Denga,"А надо", price_izumrud, "денег")
                print(2)
                qq_qq()
                q = qq_qq()
#Покупка алмаза
    elif q == "2":
        if Denga >= 120:
            Denga -= 120
            print(z, ",вы приобрели алмаз, у вас осталось" ,Denga , "денег")
            qq_qq()
            q = qq_qq()
        else:
            print(z,",А денег то не хватает! У вас только",Denga,"А надо 120 денег") 
            print(4)
            qq_qq()
            q = qq_qq()
# Реклама    
    elif q == "3":
        Denga += price_za_reklamu
        print(z, ",вы посмотрели рекламу, у вас стало" ,Denga , "денег")
        qq_qq()
        q = qq_qq()
#Тариф
    elif q == '4':
        if Denga >= 500:
            Denga -=500
            print("вы улучшили свой тариф! Цены на драгоценности -30%")
            tarif +=1
            print(tarif)
            qq_qq()
            q = qq_qq()
#Ошибка ввода
    else:
        print(z, ",вы ввели фигню")
        qq_qq()
        q = qq_qq()
Rodegast
Не надо qq_qq 2 раза вызывать. Должно быть:
                 print(z,",А денег то не хватает! У вас только",Denga,"А надо", price_izumrud, "денег")
                print(2)
                q = qq_qq()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB