Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2014 17:53:07

magdara
Зарегистрирован: 2013-03-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Добрый день. Помогите новичку разобраться со скриптом.

Я хочу освоить язык Python, в программировании совсем новичок, подскажите с кодом, пожалуйста, не понимаю в чем проблема.
Собственно задача скрипта в том, чтобы ввести 3 числа (basic coins, level, Tier) и умножить 1-е числа на 2-е и результат умножить на 3-е число, а за тем вывести результат на экран.
Эти числа принимают значения переменных, в зависимости от того какие данные введет пользователь.
P.S. сначала смотрите код в аттаче (в нем 30 строк )
А проблема такая - интерпретатор на запуск скрипта реагирует следующим образом:

Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) on win32
Type “copyright”, “credits” or “license()” for more information.
Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) on win32
Type “copyright”, “credits” or “license()” for more information.
>>> ================================ RESTART ================================
>>>
Enter basic coins: 3000
Enter level: 16
Enter your Tier: g
Traceback (most recent call last):
File “D:\Other\test.py”, line 33, in <module>
print (basicCoins*levelRange*tier);
TypeError: unsupported operand type(s) for *: ‘NoneType’ and ‘NoneType’
>>>

Что в коде мне нужно исправить и какова причина этого фейла, подскажите пожалуйста, буду благодарен

Прикреплённый файлы:
attachment test.py (677 байт)

Офлайн

#2 Март 4, 2014 18:09:23

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

Добрый день. Помогите новичку разобраться со скриптом.

Вам что-то такое нужно?

basicCoins = int(input('Enter basic coins: '));
userLevel = int(input('Enter level: '));
tier = int(input('Enter your Tier: '));
lr1 = (1, 2, 3, 4, 5, 6, 7, 8, 9);
lr2 = (10, 11, 12, 13, 14, 15, 16, 17, 18, 19);
lr3 = (20, 21, 22, 23, 24, 25, 26, 27, 28, 29);
if userLevel == lr1:
    levelRange = int(0.5)
elif userLevel == lr2:
    levelRange = int(1);
elif userLevel == lr3:
    levelRange = int(2);
else:
    levelRange = int(3);
print (basicCoins*levelRange*tier);

вот вывод:
Enter basic coins: 4
Enter level: 5
Enter your Tier: 6
72

p.s. Судя по коду, который вы приложили, вы не совсем понимаете что там происходит.

Отредактировано alexsis (Март 4, 2014 18:11:03)

Офлайн

#3 Март 4, 2014 18:21:39

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

Добрый день. Помогите новичку разобраться со скриптом.

levelRange = int(0.5)
зачем здесь приведение к типу? Если нужна дробь то должен быть float.

if userLevel == lr1:
может userLevel in lr1?

В общем, что-то такое:
basicCoins = int(input('Enter basic coins: '))
userLevel = int(input('Enter level: '))
tier = int(input('Enter your Tier: '))
lr1 = (1, 2, 3, 4, 5, 6, 7, 8, 9)
lr2 = (10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
lr3 = (20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
if userLevel in lr1:
    levelRange = 0.5
elif userLevel in lr2:
    levelRange = 1
elif userLevel in lr3:
    levelRange = 2
else:
    levelRange = 3
print (basicCoins*levelRange*tier)

Отредактировано alexsis (Март 4, 2014 18:23:10)

Офлайн

#4 Март 4, 2014 18:29:37

magdara
Зарегистрирован: 2013-03-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Добрый день. Помогите новичку разобраться со скриптом.

alexsis, (сразу хочу сказать спасибо за помощь )

не совсем, вверху есть переменные:

b = int(1);
s = int(1.5);
g = int(2.5);
p = int (4);
d = int(7);
rd = int(10);

в строку “tier == input('Enter your Tier: ‘);” пользователь должен ввести одну из этих букв (b, s, g, p, d, rd)
и переменная tier должна принять значение одной из этих переменных
т.е. я ввожу так:
в строке “basicCoins == int(input(’Enter basic coins: ‘));” я ввожу 1-е число
в строке “userLevel == int(input(’Enter level: ‘));” ввожу 2-е число, и в последствии переменная levelRange должна принять значение одной из переменных в блоке условного оператора if

if userLevel == lr1:
levelRange == int(0.5)
elif userLevel == lr2:
levelRange == int(1);
elif userLevel == lr3:
levelRange == int(2);
else:
levelRange == int(3);

и в строку “tier == input(’Enter your Tier: ');” ввожу одну из этих букв (b, s, g, p, d, rd) и она должна читаться дальше как число 3
в итоге вывести на экран 1-е число * 2-е число * 3-е число
Что мне исправить?

Офлайн

#5 Март 4, 2014 19:45:03

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

Добрый день. Помогите новичку разобраться со скриптом.

Можно сделать словарь вида:

tiers = {'b': 1, 's': 1,5}
И доставать из него значения.

P.s. Марк Лутц “Изучаем Python”

Отредактировано alexsis (Март 4, 2014 19:45:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version