変数TOTAL_TRI
を追跡したいと思います。 TOTAL_TRI
には、ゲームから正しく答えられた質問の数が含まれています。 statistics
が呼び出されると、その値を保存して関数statistics
に渡す必要があります。本質的に、プレイヤーはゲームpy_game
をプレイします。TOTAL_TRI
は、彼らが得た質問の数を保持し、プレイヤーが関数statistics
を呼び出したときに、彼らが得た質問の数が表示されますか?私はしばらくの間これを驚かせてきましたが、大きな進展はありませんでした。何か案は?どのようにPythonのグローバル変数を追跡しますか
P.S. メニュー内の他のゲームはまだ実装されていませんが、同じ再生回数で正しい数の質問を保存し、プレーヤーにstatistics
種類のものを呼び込ませます。グローバル変数を使用しての試みで更新
:
#py_game------------------------------------------------------------------------
import random
from random import choice
from random import randint
TOTAL_TRI = 0
def py_game():
for k in range (1,2):
print('\nPractice Problem', k, 'of 2')
min_pyramid_size = 3
max_pyramid_size = 5
total_chars = 0
num_rows = random.randint(min_pyramid_size, max_pyramid_size)
for i in range(num_rows):
x = ''.join(str(random.choice('*%')) for j in range(2*i+1))
print(' ' * (num_rows - i) + x)
total_chars = total_chars + x.count('%')
try:
user_answer = int(input('Enter the number of % characters' + \
' in the pyramid: '))
except:
user_answer = print()
if user_answer == total_chars:
print('You are correct!')
else:
print("Sorry that's not the correct answer")
points = 0
global TOTAL_TRI
for k in range (1,2):
print('\nProblem', k, 'of 10')
min_pyramid_size = 3
max_pyramid_size = 5
total_chars = 0
num_rows = random.randint(min_pyramid_size, max_pyramid_size)
for i in range(num_rows):
x = ''.join(str(random.choice('*%')) for j in range(2*i+1))
print(' ' * (num_rows - i) + x)
total_chars = total_chars + x.count('%')
try:
user_answer = int(input('Enter the number of % characters' + \
' in the pyramid: '))
except:
user_answer = print()
if user_answer == total_chars:
print('You are correct!')
points +=1
else:
print("Sorry that's not the correct answer")
TOTAL_TRI = points
#------------------------------------------------------------------------------
def statistics(points):
print('\nPyramid Game---------------------------')
incorrect = 10 - (points)
print ('You answered', points, 'questions correctly')
print ('You answered', incorrect, 'questions incorrectly')
#Main Menu--------------------------------------------------------------------------
def main_menu():
calculation_game = print("Enter 1 for the game 'Calculation'")
bin_reader = print("Enter 2 for the game 'Binary Reader'")
trifacto_game = print("Enter 3 for the game 'Trifacto'")
statistics = print("Enter 4 to view your statistics")
display_data = print("Enter 5 to display data")
save_game = print("Enter 5 to save your progress")
user_input = int(input('Make your selection: '))
if user_input == 1:
calculation()
if user_input == 2:
binary_reader()
if user_input == 3:
py_game()
if user_input == 4:
statistics(TOTAL_TRI)
if user_input == 5:
save_game()
if user_input != 1 or 2 or 3 or 4 or 5:
print('invalid input')
print('\n')
main_menu()
main_menu()
私はあなたが言ったことを試しましたが、構文エラーが戻ってきただけです。私が間違っていることを知っていますか?私は更新を投稿します。 – kjf545
あなたはエラーを投稿できますか?グローバル宣言は、関数の先頭で行う必要があります。 –
右、関数の先頭に移動し、エラーはなくなりました。しかし、今私がコードを実行すると、TOTAL_TRIの値は変更されていません。実際、関数py_gameはTOTAL_TRIの存在を認識していません。私は検証のためにこのステッパーを使いました:http://www.pythontutor.com/visualize.html#mode=edit。 – kjf545