为什么输出与输入不同?

时间:2021-06-28 22:16:27

标签: python

我正在做我的第一个项目,到目前为止一切都很好,但我注意到一个问题,首先是我的代码:

#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功能后输入的数据?

1 个答案:

答案 0 :(得分:0)

这是此代码的简化版本。请注意,问题部分实际上并未测试问题所暗示的内容。

需要注意的一点是,如果你想给一个函数提供信息(例如你想传递给 start 的名字),你应该把它作为函数的参数,而不是试图直接从调用范围拉取变量。

拥有多个执行相同操作的函数(例如您的 startstartSuggest),或者就此而言拥有相同信息的两个不同变量(例如 {{1} } 和 name)。将玩家的名字放入变量 nameSuggest 中意味着您不需要检查代码的问题部分来查看它是否应该查看 namename

nameSuggest