需要帮助修复和格式化我的Python代码吗

2024-10-02 04:27:10 发布

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

Primary U.S. interstate highways are numbered 1-99.
Odd numbers (like the 5 or 95) go north/south, and evens (like the 10 or 90) go east/west.
Auxiliary highways are numbered 100-999, and service the primary highway indicated by the rightmost two digits. Thus, I-405 services I-5, and I-290 services I-90.

Given a highway number, indicate whether it is a primary or auxiliary highway. If auxiliary, indicate what primary highway it serves. Also indicate if the (primary) highway runs north/south or east/west.

Ex: If the input is:
90
the output is:
I-90 is primary, going east/west.
Ex: If the input is:
290
the output is:
I-290 is auxiliary, serving I-90, going east/west.
Ex: If the input is:
0
the output is:
0 is not a valid interstate highway number.

我的代码:

highway_number = int(input("Enter highway number: "))

# output if the highway is invalid

if  ((highway_number <1) or (highway_number >999)):
   print (' {} is not a valid highway number'.format (highway_number))
else: # valid

   if (highway_number >99):
      print ( ' I-{} is a auxillary highway '.format (highway_number))
# serves the primary interstate highway
   primary_number = highway_number % 100

print (' serving I-{}'.format(primary_number))
else: # must be 1-99 and it is  primary interstate highway
primary_interstate_highway = highway_number
print (' I-{} is a primary interstate highway'.format(highway_number))
# direction

if (primary_interstate_highway %2) == 0): #Event
print('going east/west')
else: #odd
print('going south/north')

这就是当前出现错误的地方


Tags: orandthenumberinputoutputifis
3条回答

您的代码缺少ifelif。基于Python语法,if statements应该是这样的:

if (statement):
    code

elif (statement):    # elif is optional when you only have two statements to compare
    code

else:         # else is the default statement, if all upper statements aren't met, then this will run instead
    code

因此,在代码中,您可以添加另一个if或编辑elseelif。或者正如其他人所指出的,您应该intend使用else语句。以下是代码和一些小补丁:

highway_number = int(input("Enter highway number: "))

# output if the highway is invalid

if  ((highway_number <1) or (highway_number >999)):
   print (' {} is not a valid highway number'.format (highway_number))
   
   
else: # valid

    if (highway_number >99):
        print ( ' I-{} is a auxillary highway '.format (highway_number)) # the if block statement wasn't indented
        # serves the primary interstate highway
        primary_number = highway_number % 100

        print (' serving I-{}'.format(primary_number))
    else: # must be 1-99 and it is  primary interstate highway
    
        primary_interstate_highway = highway_number
        print (' I-{} is a primary interstate highway'.format(highway_number))
        
# direction

if (primary_interstate_highway %2) == 0: #Event ; here you had an extra ")"
    print('going east/west')
else: #odd
    print('going south/north')

缩进时要更加小心,因为缩进是4个空格,而不是3个空格或制表符

您根本不需要嵌套检查,因为每个部分都有自己的条件

您还可以为每个条件使用中间变量,这将使其更易于在最终输出中使用

请注意,每个if在同一垂直缩进线上都有一个(可选)匹配的else

# Get and check input
highway_number = int(input("Enter highway number: "))
if highway_number < 1 or highway_number > 999:
  print (' {} is not a valid highway number'.format (highway_number))
  quit()

# Type + serving
if highway_number > 100:
  road_type = 'auxiliary'
  serving = str(highway_number % 100)
else:
  road_type = 'primary'
  serving = ''

# Direction
if highway_number % 2 == 0:
  going = 'east/west'
else:
  going = 'north/south'

# Create output
output = ['I-{}'.format(highway_number), 'is', road_type + ',']
if serving:
  output.extend(['serving', 'I-{},'.format(serving)])
output.extend(['going', going])
print(' '.join(output))

现在试试看,你错过了一些缩进,还有闭括号和开括号,还有全局变量,我指的是外部范围

highway_number = int(input("Enter highway number: "))

# output if the highway is invalid
primary_number = []
primary_interstate_highway = ''
if  ((highway_number <1) or (highway_number >999)):
   print (' {} is not a valid highway number'.format (highway_number))
else: # valid

   if (highway_number >99):
      print ( ' I-{} is a auxillary highway '.format (highway_number))
# serves the primary interstate highway
      primary_number = highway_number % 100

      print (' serving I-{}'.format(primary_number))
   else: # must be 1-99 and it is  primary interstate highway
      primary_interstate_highway = highway_number
      print (' I-{} is a primary interstate highway'.format(highway_number))
# direction

   if ((int(primary_interstate_highway) %2) == 0): #Event

      print('going east/west')

   else: #odd
      print('going south/north')

相关问题 更多 >

    热门问题