Cześć drodzy pasjonaci.
Napisałem program 5 liczb, który jest taką zgadywanką jednej z pośród 5 losowych liczb z listy i liczy winratio. Program liczb5_rate w zamyśle miał wprowadzać n liczbe testów na każdy z indeksów tej listy i podawać win ratio. dlatego importuje tą funkcje. Na razie jednak zatrzymałem się na poniższym problemie:
Czy ktoś jest mi w stanie pomoc z importem funkcji z jednego modułu do drugiego ? Importuje funkcje gen_list() z programu liczb5.py do programu liczb5_rate.py
Niestety w programie liczb5_rate po zaimportowaniu tej funkcji cały czas wykonuje się dalsza instrukcja zawarta w programie liczb5. (czyli główna pętla while true – co jest efektem nie pożądanym, bo nie wykonuje się funkcja win_ratio(n) ). Próbowałem importować cały moduł i wywoływać z niego samą funkcje ale efekt jest ten sam. Ten patent z if __name__ =”__main__”: tez mi nic nie daje, choć nie wiem czy to dobrze zastosowałem. Poniżej kody:
Liczb5.py:
import random
import os
score = 0
count = 0
def cls():
os.system("cls")
def gen_list():
numbers = []
for i in range(5):
x = random.randint(1,100)
numbers.append(x)
for j in range(len(numbers)):
print(numbers[j])
y = random.randint(0,4)
x = numbers[y]
return numbers, y, x
if __name__ == "__main__":
gen_list()
cls()
while True:
print ("\nOdgadnij liczbe wylosowana przez komputer:")
numbers, y, x = gen_list()
while True:
try:
answer = int(input("Podaj liczbe: "))
break
except ValueError:
continue
if answer == x:
print("\nBrawo! Odgadleś prawidlowo!")
score +=1
count +=1
else:
print("\nPrzegrana! Komputer wylosowal: ", x)
count +=1
print("Prob {} // Wygranych: {} // Winratio: {}%".format (count, score,round(score/count*100,2)))
msg = "\t\tAby zagrać ponownie wcisnij ENTER, aby wyjsc wcisnij q: "
prompt = input(msg)
if prompt == 'q' or prompt == 'Q':
break
cls()
Liczb5_rate.py:
import random
import os
from liczb5 import gen_list
def cls():
os.system("cls")
def win_ratio(n):
score = 0
for i in range(n):
numbers, y, x = gen_list()
if x == numbers[0]:
score += 1
cls()
print("Prob {} // Wygranych: {} // Winratio: {}%".format (n, score,round(score/n*100,2)))
while True:
try:
win_ratio(int(input()))
break
except ValueError as e:
continue