0

我的第一个 Python 代码。

所以,我大约 45 分钟前才开始编码,在尝试自己解决这个问题后,我决定寻求一些帮助。请随时对我的代码草率、不稳定等提出一些建设性的批评。我在 Lua 方面比在 Python 方面要好得多。我在 IDLE Python GUI 中遇到的问题是,当我按 F5 在 Python Shell 中运行它时,它给了我一个错误,说“需要一个缩进块”,但没有告诉我在哪里放置缩进块。我想从一些简单的事情开始,所以我开始编写一个有效的“年龄计算器”,代码如下:

# Importing necessary modules #

import time
import math

# Start Application #

print ("The age calculator!")
time.sleep(1)
print ("May I collect some information about you?")
yn = (input("Yes or No: "))

# if-elif Based Decisions #

if yn != Yes or No:
    ynInvalid()

elif yn == No:
    exit()

elif yn == Yes:
    ynYes()

elif yn != Yes or No:
    ynInvalid()

#Defining Functions#

def PrintInfo():
    print ("Hello", name, "Nice to meet you!")

def AgeCheck():
    if age <= 0:
    print("Invalid Age!")
    elif age > 0:
    days = age * 365
    minutes = age * 525948
    seconds = age *  31556926
    print("Doing some math please wait...")
    time.sleep(4)
    print(name,"you been alive for", days,"days", minutes, "minutes and", seconds, "seconds, Wow you're really old!")

def ynYes():

    time.sleep(2)
    print (" Please enter your name below.")
    time.sleep(1)
    name = input("Name: ")
    time.sleep(1)
    PrintInfo()
    age = int(input("Age: "))
    AgeCheck()

def ynYesRetry():

    age = int(input("Age: "))
    AgeCheck()

def ynInvalid():
    print("Invalid Argument! Please try Again!")
    ynYesRetry()
4

3 回答 3

0

IDLE 永远不会只是给你一个错误而不告诉你错误发生在哪里。如果您发布完整的回溯,人们可以弄清楚它的含义,向您解释,并希望下次解释您如何自己做。

此外,复制和粘贴实际错误,而不是解释它,使人们更容易调试您的问题。

在这种情况下,快速浏览一下就可以很明显地发现至少有一个缩进错误:

def AgeCheck():
    if age <= 0:
    print("Invalid Age!")

语句的主体if必须比条件部分缩进更多。

更一般地说,任何以 a 结尾的东西:总是后面跟着一个缩进块。

您可能有额外的缩进错误;这个甚至可能不是 IDLE 告诉你的那个。但希望这些信息足以让您自己找到并修复它们。

于 2013-08-07T21:22:48.033 回答
0
if age <= 0:
print("Invalid Age!")
elif age > 0:
days = age * 365

您没有正确缩进。

if age <= 0:
    print("Invalid Age!")
elif age > 0:
    days = age * 365
于 2013-08-07T21:23:43.697 回答
0

年龄检查应该是:

def AgeCheck():
    if age <= 0:
        print("Invalid Age!")
    elif age > 0:
        days = age * 365
        minutes = age * 525948
        seconds = age *  31556926
        print("Doing some math please wait...")
        time.sleep(4)
        print(name,"you been alive for", days,"days", minutes, "minutes and", seconds, "seconds, Wow you're really old!")

毕竟 if 和 elif 语句需要缩进。这就是 Python 知道语句结果中包含的内容的方式。

于 2016-03-13T09:56:16.870 回答