-
Notifications
You must be signed in to change notification settings - Fork 0
/
Execicio2.py
113 lines (76 loc) · 3.31 KB
/
Execicio2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
from os import system
TITULO = ('*' * 20 + ' Calculadora de inimigos mortos para dropar items ' + '*' * 20)
QUANTITIES = [30,40,50,60,70,80,90,95,97]
# STRING IN CASE USER INPUT INVALID CHANCE
CHANCESR = 'Por favor digite uma chance valida :'
# STRING IN CASE USER INPUT INVALID KILL COUNT
KILLCR = 'Por favor digite um numero de kills valido :'
def hasNum(str): # CHECK IF STRING HAS A NUMBER
for i in str:
if i.isnumeric():
return True
return False
def numbersFS(string): # RETURN ALL OF THE NUMBERS IN A STRING OR -1 IF NO NUMBERS ARE PRESENT
output = ''
for i in string:
if i.isnumeric():
output += i
if output == '':
return -1
return int(output)
# GET USER INPUTS, VALIDADATE THEM AND TRANSFORM INTO PERCENTAGE IF NEEDED
def getInputs(chS='Qual a chance de drop do item? (porcentagem ou drops/inimigos mortos):',
kcS='Quantas vezes voce derrotou esse inimigo? :'):
system('cls')
print(TITULO)
chance = input(chS)
killsInp = input(kcS)
percent = ['',''] # LIST WITH Y ITEM DROPS EVERY X ENEMY KILLS
kills = numbersFS(killsInp) # CONVERT ENEMY KILL COUNT INTO NUMBERS
#IF KILLS IS NOT A NUMBER
if kills == -1:
return getInputs(CHANCESR,KILLCR)
# IF USER GIVES DROP CHANCE IN PERCENTAGE
if chance.isdigit() or '%' in chance:
output = numbersFS(chance) # NUMBERS FROM USER INPUT
# IF CHANCE INPUT IS INVALID CALL RECURSION
if output != -1:
return output, kills
else:
return getInputs(CHANCESR,KILLCR)
# IF USER GIVES THE AMOUNT OF ENEMIES KILLED FOR THE ITEM DROP
else:
for i in chance:
# IF i IS NaN IN CHANCE STRING
if not i.isnumeric():
# SPLIT THE CHANCE IN THE FOUND CHARACTER
chanceS = [chance[:chance.index(i)],chance[chance.index(i):]]
# CHECK IF BOTH SUBSTRINGS HAVE NUMBERS
if hasNum(chanceS[0]) and hasNum(chanceS[1]):
# CONVERTING BOTH STRINGS INTO NUMBERS
percent[0] = numbersFS(chanceS[0])
percent[1] = numbersFS(chanceS[1])
# CALCULATING OUTPUT PERCENTAGE
output = (percent[0] / percent[1])*100
return output, kills
# IF NO NUMBER IS FOUND IN EITHER SUBSTRING REDO FUNCTION
else:
return getInputs(CHANCESR,KILLCR)
return getInputs(CHANCESR,KILLCR)
def printQuantity(aim, chance, kills):
prt = (aim/chance) # HOW MANY ENEMIES SHOULD BE KILLED FOR THE DESIRED DROP CHANCE
# CHECK IF CURRENT DROP CHANCE SURPRASSED DESIRED DROP CHANCE
if int(prt) > 0:
print(f'Para você ter {aim}% de chances de conseguir o item você',
f' deverá matar {int(prt)} inimigos no jogo.')
# IF ITEM SHOULD HAVE BEEN DROPED ALREADY
elif aim == 97:
print('Este item provavelmente sera dropado em alguns inimigos mortos!')
def main():
chance, kills = getInputs()
system('cls')
print(TITULO)
for i in QUANTITIES:
printQuantity(i,chance,kills)
if __name__ == '__main__':
main()