即使使用带有isdigit()的数字,我的while循环也是无限的

时间:2018-10-07 06:47:12

标签: python

为什么在使用bob和(例如5)时,我的while循环是无限的? python的新手,所以如果这是一个太基本的问题。

from splashkit import *

def read_string (prompt):
    write_line(prompt)
    result = read_line()

    return result

def read_interger (prompt):
    line = read_string(prompt)

    while not line.isdigit():
        print("Please enter a whole number")
        line = read_string(prompt)

    return int(line)

name = read_string("Enter your name: ")
age = read_interger("Enter your age: ")

print("Hello", name)
print("Aged: ", age)

1 个答案:

答案 0 :(得分:1)

一个疯狂的猜测……(read_line()的文档并未对函数的作用做太多说明。

问题在于,读取的行还包含换行符'\n',因此.isdigit()将始终为false,因为如文档所述,字符串不能为空且所有字符字符串中的数字必须是数字。

您可以更改result = read_line().strip()的输入来解决此问题,因为它将删除结尾的换行符。