程序将以“else”状态退出

2024-04-25 10:23:16 发布

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

我正在尝试制作一个Python脚本,它将根据你的出生日期告诉你你出生在哪一天。你知道吗

但是我需要这样做,如果你出生在“二月”、“四月”、“六月”、“九月”、“十一月”这两个月,那么它需要有一个不同的等式,所以现在我这样做了,如果你把你的日期设为“6”(六月),它只会

print("This Is True")

所以我就这样安排的

if M == '2':
    i = 30
    X = 'Answer'

if M == '4':
    i = 30
    X = 'Answer'

if M == '6':
    i = 30
    X = 'Answer'

if M == '9':
    i = 30
    X = 'Answer'

if M == '11':
    i = 30
    X = 'Answer'

os.system('CLS')






if X == 'Answer':
    print('This Is True')
    input()

elif X != 'Answer':
    print('This is False')
    input()

然而,当它不是上面列出的一个月,它会

print('This is False')

然而,当我输入“10”(十月)时,程序将关闭,不会显示“This is False”

我知道我今天问了很多问题,但是再一次(如果你不能从代码中分辨出来的话)我是个新手

如果有人还想指出代码可能更好的地方的任何提示,请看以下所有内容:

import os

M = 'Monday'
T = 'Tuesday'
W = 'Wednesday'
TT = 'Thursday'
F = 'Friday'
S = 'Saturday'
SS = 'Sunday'

print('Enter Your DOB as DD/MM/YYYY: ')

D = input("Day: ")




M = input("Month: ")



if M == '2':
    i = 30
    X = 'Answer'

if M == '4':
    i = 30
    X = 'Answer'

if M == '6':
    i = 30
    X = 'Answer'

if M == '9':
    i = 30
    X = 'Answer'

if M == '11':
    i = 30
    X = 'Answer'




Y = input("Year: ")
if (len(Y)) < 4:
    print('You Have Entered A Too Short Or Too Long of a Year')
    input()
    os._exit(0)


os.system('CLS')






if X == 'Answer':
    print('This Is True')


elif X != 'Answer':
    print('This is False')
    input()




os.system('CLS')



print("You Were Born On A:")


input("Press ENTER To Exit")

Tags: 代码answerfalsetrueinputifisos
3条回答

也许这对您来说太高级了,但是我们有一个称为datetime模块的模块,它适用于这些事情,因此您的代码可以缩短为

import os
import datetime

#Get date in correct format from user
dob = input('Enter Your DOB as DD/MM/YYYY:')

#Convert to datetime object
date_obj = datetime.datetime.strptime(dob, '%d/%m/%Y')

#Get day of week
print("You Were Born On A {}".format(date_obj.strftime("%A")))

输出看起来像

Enter Your DOB as DD/MM/YYYY:31/01/1991
You Were Born On A Thursday

此外,还有一些方法可以改进以前的代码。你知道吗

  1. 使用列表保存所有weekdays
  2. 与其用那么多if-else,不如用['2' , '4', '6', '9', '11']这样的列表来保存你所有的月份,用in来检查这个月是否结帐,如果你用的是MM,你应该对照02,04,06...等等
  3. 使用sys.exit()退出代码

因此,对代码的改进可能看起来像。你知道吗

import sys
import os

#List of weekdays
weekdays = ['Monday' ,'Tuesday' ,'Wednesday', 'Thursday' , 'Friday' ,'Saturday', 'Sunday']

print('Enter Your DOB as DD/MM/YYYY: ')

day = input("Day: ")
month = input("Month: ")

X = ''

#Check for month
if month in  ['02' , '04', '06', '09', '11']:
    i = 30
    X = 'Answer'

Y = input("Year: ")
if (len(Y)) < 4:
    print('You Have Entered A Too Short Or Too Long of a Year')
    sys.exit(0)

if X == 'Answer':
    print('This Is True')

elif X != 'Answer':
    print('This is False')

print("You Were Born On A:")

input("Press ENTER To Exit")

为什么不使用真/假

我重写了一些东西并添加了@Max的想法

import os

M = 'Monday'
T = 'Tuesday'
W = 'Wednesday'
TT = 'Thursday'
F = 'Friday'
S = 'Saturday'
SS = 'Sunday'

X = False

print('Enter Your DOB as DD/MM/YYYY: ')

D = input("Day: ")
M = input("Month: ")

if M in ['2', '4', '6', '9', '11']:
    i = 30
    X = True

Y = input("Year: ")
if (len(Y)) < 4:
    print('You Have Entered A Too Short Or Too Long of a Year')
    input()
    os._exit(0)

os.system('CLS')

if X:
    print('This Is True')
else:
    print('This is False')
    input()

os.system('CLS')

print("You Were Born On A:")
input("Press ENTER To Exit")

请注意代码中的一些错误:

  • 首先将M变量实例化为MondayM = 'Monday'),然后用用户的输入覆盖它的值(M = input("Month: ")

  • 只有当一个if被设置为true时,才创建X变量,这意味着M是'2,4,6,9,11)

您应该在if之外创建X

比如:

day = int(input("Day: "))
month = int(input("Month: "))

X = "Not Answer"
if M in (2, 4, 6, 9, 11):
    i = 30
    X = 'Answer'

...

if X == 'Answer':
    print('This Is True')
else:
    print('This is False')
    input()

相关问题 更多 >