繁体   English   中英

如何在 Python 中获得变量输入?

[英]How do I get a variable input in Python?

在某些情况下,我正在开发一个华氏到摄氏度的代码转换器,我还添加了一些额外的游戏和对代码的修改。 但是变量“ContinueYN”会得到“yes”和“no”输入,但不会得到“I don't understand input”。

这是我的代码:

import random
import time
continueYN = "y"
firstletter = "n"
firstletterCAP = "N"
firstletterY = "y"
firstletterCAPY = "Y"
Revert = "I dont understand"

def Modification():
   x = random.randint(1,100)
   print("Calculate",x,"Fahrenheit to Celsius, The Formular is","(",x," - 32) * 5 / 9, You Have 30 Seconds, Your Time Starts Now!")
   useranswer = int(input())
   time.sleep(30)
   answer = (x - 32) * 5 / 9
   if useranswer == answer:
       print("You Did It!")
       quit()
   else:
       print("Try Again!")
 
while continueYN == "y":
   sDegreeF = input("Enter next temperature in degrees Fahrenheit (F):")
   nDegreeF = int(sDegreeF)
   nDegreeC = (nDegreeF - 32) * 5 / 9
   print ("Temperature in degrees C is:", nDegreeC)
   if nDegreeC < 0:
      print ("Pack long underwear!")
   if nDegreeF > 100:
      print ("Remember to hydrate!")
 
   continueYN = input("Input another?")

   if continueYN[0] == firstletterY or continueYN[0] == firstletterCAPY:
       Modification()
   if continueYN[0] == firstletter or firstletterCAP:
       break
   if continueYN == Revert:
      continueYN = input("Input another?")
   else:
       print("I don't understand!")

       

我正在使用 python 3.10.5,我将不胜感激并解释我做错了什么

简单的语法错误,您错过了 if 语句的第二个条件

if continueYN[0] == firstletterY or continueYN[0] == firstletterCAPY:
   Modification()

if continueYN[0] == firstletter or continueYN[0] == firstletterCAP:
   break

if continueYN == Revert:
  continueYN = input("Input another?")
else:
  print("I don't understand!")

你的 if 语句应该是这样的

尽管当我尝试理解您的代码的功能时,您试图实现的目标变得令人困惑。 你的问题也有点不清楚。 我仍然尝试回答考虑,您想要实现的是,“如果用户输入的任何内容不以“y”、“Y”、“N”、“n”开头,程序应该显示:我不理解:”:您的代码有以下与此相关的问题:

您不是在比较第二个 fi 语句中的值,而是您刚刚输入了始终为 true 的值:

错误的:

if continueYN[0] == firstletter or firstletterCAP:
            break

正确的:

if continueYN[0] == firstletter or continueYN[0] ==firstletterCAP:
        break

您正在将字符串值与您需要的 output 进行比较,而不是用户提供的值。 使用以下代码代替您的条件语句:

if continueYN[0] == firstletterY or continueYN[0] == firstletterCAPY:
    Modification()
if continueYN[0] == firstletter or continueYN[0] ==firstletterCAP:
    break
else:
    print("I don't understand!")
    continueYN = input("Input another?")

此外,在所有积极的情况下都不会满足您 for while 循环的条件。 请将其替换为以下内容:

while(continueYN[0] == firstletterY or continueYN[0] == firstletterCAPY):

您实际上并不需要 'yYnN' 风格的响应来决定是否应该继续输入和相应的计算。 空输入可用于指示不再需要输入,而其他任何输入都假定为华氏值。

您应该始终验证用户输入。

此代码忽略了 OP 的Modification() function,因为它的目的尚不清楚,除非它为用户提供 100 分之一的选择与randint()返回的相同随机数。 很没有意义。

反正...

while True:
    fs = input('Enter temperature in Fahrenheit (Return to finish): ')
    if fs:
        try:
            f = float(fs)
            c = (f - 32) * 5 / 9
            print(f'The temperature in celcius is {c:.2f}')
            if c < 0:
                print('Pack long underwear!')
            elif f > 100:
                print('Remember to hydrate!')
        except ValueError as e:
            print(e)
    else:
        break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM