我正在做我的第一个项目,到目前为止一切都很好,但我注意到一个问题,首先是我的代码:
#name generator
import random
#clear console
import os
def cls():
os.system('cls' if os.name=='nt' else 'clear')
#import from txt file:
with open('nameGenerator.txt') as file:
suggestions = file.readlines()
suggestions = [s.strip() for s in suggestions]
suggest5 = random.choices(suggestions, k = 5)
def startSuggest():
global nameSuggest1
nameSuggest1 = input("your name is " + nameSuggest + " || thank you, you can now begin your game! \n press any key to continue:")
def start():
global start
start = input("your name is " + name + " || thank you, you can now begin your game! \n press any key to continue:")
name = input("What would you like your name to be? \n if you are unsure about what you want your name to be please type \"suggest\" \n")
if name != "suggest":
start()
elif name == "suggest":
print("here are some of my syggestions: \n")
print(', '.join(suggest5))
nameSuggest = input("Please pick one and enter the username: \n")
startSuggest()
#would u rather question
cls()
if name:
dollarQuestion = input("Question for " + name + " would you like $1,000,000 or $0.01 every single day for thirty days?\n")
elif nameSuggest:
dollarQuestion = input("Question for " + nameSuggest + "would you like $1,000,000 or $0.01 every single day for thirty days?\n")
if dollarQuestion in ("$1,000,000", "$1000000", "1000000", "1,000,000"):
print("great! you have recieved your $1,000,000")
elif dollarQuestion in ("$0.01", "0.01"):
TotalPenny = 0.01 *(2**30)
if TotalPenny > 1000000:
print("that's nice, you have recived a total of $" + str(round(TotalPenny, 3)) + " that's a win for you." )
elif TotalPenny < 1000000:
print("that's bad, you have recived a total of $" + str(round(TotalPenny, 3)) + " that's a loss for you." )
else:
print("please try again but this time pick a valid amount")
一切都很好,但我注意到当我的第一个输入是“建议”时,它给了我我的建议,它还输出 your name is test || thank you, you can now begin your game! press any key to continue:
到目前为止它工作得很好,但问题是一旦第二个问题出现,这是输出:
Question for suggest would you like $1,000,000 or $0.01 every single day for thirty days?
为什么会这样,为什么输出的是“suggest”而不是suggest功能后输入的数据?
答案 0 :(得分:0)
这是此代码的简化版本。请注意,问题部分实际上并未测试问题所暗示的内容。
需要注意的一点是,如果你想给一个函数提供信息(例如你想传递给 start
的名字),你应该把它作为函数的参数,而不是试图直接从调用范围拉取变量。
拥有多个执行相同操作的函数(例如您的 start
和 startSuggest
),或者就此而言拥有相同信息的两个不同变量(例如 {{1} } 和 name
)。将玩家的名字放入变量 nameSuggest
中意味着您不需要检查代码的问题部分来查看它是否应该查看 name
或 name
。
nameSuggest