所以我正在尝试制作一个检查数字功能,令人尴尬的是,我已经很早就遇到了一个障碍,但我一直在尝试搜索问题,但是大多数不幸的是,我遇到的解释超出了我的理解。我希望有人能给我一个特定的分解,以解决我的问题现在
mam = []
def check_digit():
a = int(input("Please enter your 10 digit book number"))
b = str(a)
for c in b:
mam.append(c)
print(c)
check_digit()
对不起,没有用于变量的设置名称,即使最终让他人阅读最终会变得尴尬,我也更喜欢以这种方式进行编码。好吧,无论如何,每当我以一个以0开头的整数写入时,语法错误"无效令牌"出现,我不知道如何求解它。谁能帮我吗?我会很感激
固定。我真的需要更新Python,目前我正在运行2.7。
raw_input解决了问题
您将 a
作为int施放,但切勿将其用作int。尝试直接通过输入字符串循环。
mam = []
def check_digit():
a = raw_input("Please enter your 10 digit book number")
for c in a:
mam.append(c)
print(c)
check_digit()
其他答案的解释对我来说是有意义的。这应该解决问题,因为您根本不需要将输入解释为整数。
在Python中,以0
开头的数字位于八进制基础中,您所获得的'无效令牌'错误必须大于7,这在基本8号中是非法的。尝试使用raw_input()
代替input()
,以免将值评估为数字。
与我一起解决了str
对int
的问题:
mam = []
def check_digit():
a = str(input("Please enter your 10 digit book number: "))
[mam.append(int(inputted)) for inputted in a]
print(mam)
check_digit()
print(mam[0] + mam[1])
print(type(mam[0]))
输入:
Please enter your 10 digit book number: 0123456789
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1
<class 'int'>
在python中,非确定数字以'0'开头。小数号不能以" 0"开头。老式的八分音数字用于以" 0"开头,因此'010'在Python 2中为8。HEX数字以'0x'开头,并且仍然在Python 3中。在Python 3中,八分位数现在以'0o开始'。您正在丢弃错误,因为您要输入字符串然后在其上运行int()。不要那样做。您只需检查输入的字符串是否都是数字,并确保其长度正确。或者,如果您的心脏打算检查转换为十进制的 int ,则应在转换之前用value.lstrip('0')
脱掉领先的零。
另外,您只需输入MAM,然后检查if mam.isdigit():
....isdigit()
方法检查字符串是否仅由数值数字组成。这应该是您要寻找的。