Python如何防止变量在循环过程中丢失?

2024-09-28 22:16:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在学习Python三天;这里有一个相当基本的程序,来自《用Python自动化无聊的东西-为Al-Sweigarts的初学者提供实用编程》一书,我自己也做了一些改进。你知道吗

import random
import sys
#
def getAnswer(answerNumber):
 if answerNumber == 1:
    return 'no'
 elif answerNumber == 2:
    return 'yes'
#
print("Yes or no questions will be answerd. To end the program, enter 'exit'")
while True:
 resposta = input ()
 if resposta == 'exit':
  print ('goodbye')
  sys.exit()
 print(getAnswer(random.randint(1, 2)))

但每次循环重新启动时,变量都会丢失,这让我很烦恼,所以如果问两次同一个问题,就可以给出不同的答案。我该怎么修?(我尝试过使用global语句,但没有成功)


Tags: noimport程序returnifsysexitrandom
1条回答
网友
1楼 · 发布于 2024-09-28 22:16:42

假设您不想为同一个问题显示不同的输出。这也许对你有帮助。你知道吗

我已经把这个问题和它的答案添加到历史字典中,所以每次输入一个新问题时,它都会被存储起来,当同一个问题重复出现时,答案不会改变。这是密码。你知道吗

import random
import sys

history = {} # History Dictionary

def add_to_history(resposta, answer): # New addition
    history.update({resposta: answer})

def getAnswer(answerNumber):
 if answerNumber == 1:
    return 'no'
 elif answerNumber == 2:
    return 'yes'

print("Yes or no questions will be answerd. To end the program, enter 'exit'")

while True:

 resposta = input()
 if resposta == 'exit':
  print ('goodbye')
  sys.exit()

 # Check if the question has been answered before
 if resposta in history.keys():
     print("printing from history")
     print(history[resposta])
 # If not then create a new answer
 else:
     print("getting answer")
     answer = getAnswer(random.randint(1, 2))
     print(answer)
     add_to_history(resposta, answer)

这就是行动。你知道吗

Does the sun rise in the east?
getting answer
no
Did my program work?
getting answer
yes
Does the sun rise in the east?
printing from history
no

相关问题 更多 >