【问题标题】:How to write a program that asks the user to enter a number between 0 and 1000, inclusive....continued如何编写一个要求用户输入 0 到 1000 之间的数字的程序,包括 0 到 1000,包括……续
【发布时间】:2015-06-29 10:11:37
【问题描述】:

问题:编写一个程序,要求用户输入一个介于 0 和 1000 之间(包括端点 0 和 1000)的数字。如果他们输入的数字超出范围,则打印一条消息,指出该数字超出范围,并再次提示他们输入 0 到 1000 之间的数字,包括 0 到 1000。当用户在范围内输入数字时,将数字打印到屏幕上并结束程序。

我已经编写了程序,但我确定我正确使用了while 语句。请检查我的程序并提供反馈。 我的问题:如果我输入了两次负数,则不是第三次要求输入数字。请帮忙!!

这是我的程序:

from turtle import*
def ask():
    m = eval(input("Enter a number between 0 and 1000, inclusive: "))
    return m

def inclusive(i):
    i = -1
    while i < 0 or i > 1000:
        print("Out of range, my boy. Try again!")
        i = ask()

    return i


def main():
    n = ask()
    m = inclusive(m)  
    win = Screen()
    win.bgcolor("black")
    ahamed = Turtle()
    ahamed.pencolor("blue")
    ahamed.write(m,font=["Arial",90])
    ahamed.hideturtle()

    exitonclick()

main()

我的问题:如果我输入两次负数,它不是第三次询问数字。请帮忙!!

【问题讨论】:

  • 不要使用eval(input(...),使用int(input(...))
  • 我输入的是数字,而不是字符串
  • 是的,我知道,最好使用 int 或 input 而不是 eval
  • 好的@@@@@@@@@@@@2
  • 错误 - 您实际上是在输入一个字符串。如果您使用eval 将输入的字符串转换为整数,则用户可以执行代码,如exit() 以退出程序,或其他可能危险的东西。 int() 只是试图把它变成一个整数。

标签: python format turtle-graphics


【解决方案1】:

你应该改变你的while条件如下:

def ask():
    return int(input("Enter a number between 0 and 1000, inclusive: "))

def inclusive():
    i = -1
    while i < 0 or i > 1000:
        print("Out of range, my boy. Try again!")
        i = ask()
    return i

def main():
    m = inclusive()
    print(m)

【讨论】:

  • 尝试输入-1-15。你会意识到问题所在。 @sshashank124
  • 现在的问题是它没有将数字打印到屏幕上。
  • @socrates,您需要将 inclusive 的输出分配给变量
  • 一点帮助,我自己来。
  • @socrates,我在主要功能中的做法。试试我在 cmets 中链接的演示
猜你喜欢
  • 2015-11-10
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多