【问题标题】:python 3 range and input?python 3范围和输入?
【发布时间】:2021-03-04 23:46:37
【问题描述】:

我在编写一个询问一个月中的天数的程序时遇到了麻烦,它只接受 28 到 31 之间的值;然后继续询问,直到收到可接受的值。然后询问每天的每日高温(以华氏度为单位)。只接受 -50 到 110 之间的值;继续要求每天的值,直到收到可接受的值。

这是我目前所拥有的。我收到TokenError: EOF in multi-line statement on line 11 错误。我被困在如何提示用户输入范围内每天的高温——我所拥有的最后一行。

totalnumberofday=0
totalDayHighTemp=0

num = int(input("Enter the number of days in a month:"))

if num <=28 or num>=31:
  num=int(input("please reenter an acceptable value:"))

  for i in range(1, num+1):
    DayHighTemp=float(input("Please enter the daily high temperature"+ format(i+"d"))

【问题讨论】:

  • 您能否在代码中使用块引用,因为您的第一行会引发错误,除非它们位于不同的行上。
  • 也不确定您为什么要尝试使用format。浮点数会将其转换为数字。
  • DayHighTemp 行缺少右括号,您有 3 个左括号,只有 2 个右括号

标签: python python-3.x range


【解决方案1】:

有几个问题,让我们一一解决:

  File "a.py", line 12
    
    ^
SyntaxError: unexpected EOF while parsing

SyntaxError 表示脚本的语法或语法有问题。该消息告诉我们它在期待更多代码时到达文件结尾。查看代码,最后一行缺少) 以关闭您的DayHighTemp=float(... 语句。添加) 解决了这个问题。

再次运行文件,我们得到了这个问题:

Enter the number of days in a month:30
Traceback (most recent call last):
  File "a.py", line 10, in <module>
    DayHighTemp=float(input("Please enter the daily high temperature"+ format(i+"d")))
TypeError: unsupported operand type(s) for +: 'int' and 'str'

在这里,它说我们不能将整数和字符串相加。看起来 format(i+"d") 应该是 format(i,"d")


现在,我们终于可以解决您的核心问题:“继续询问,直到收到可接受的值。”

您询问有效日期的解决方案是只检查一次,而不是检查您是否输入第二次:

num = int(input("Enter the number of days in a month:"))

if num <=28 or num>=31:
  num=int(input("please reenter an acceptable value:"))

相反,最好一直问这个问题直到它收到一个有效的响应——或者,更好的措辞,继续问响应是有效。

虽然有多种方法可以做到这一点,但这里有一种方法:

num = int(input("Enter the number of days in a month:"))

while num <=28 or num>=31:
  num=int(input("please reenter an acceptable value:"))

我将把它留作练习,让您调整它以确保有效温度。

【讨论】:

    猜你喜欢
    • 2021-02-26
    • 1970-01-01
    • 2022-01-23
    • 2014-12-25
    • 2016-09-24
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多