Форум сайта python.su
0
Я хочу освоить язык 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’
>>>
Что в коде мне нужно исправить и какова причина этого фейла, подскажите пожалуйста, буду благодарен 
Прикреплённый файлы:
test.py (677 байт)
Офлайн
9
Вам что-то такое нужно?
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
Отредактировано alexsis (Март 4, 2014 18:11:03)
Офлайн
9
levelRange = int(0.5)
if userLevel == 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)
Офлайн
0
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-е число
Что мне исправить?
Офлайн
9
Можно сделать словарь вида:
tiers = {'b': 1, 's': 1,5}
Отредактировано alexsis (Март 4, 2014 19:45:38)
Офлайн