这段代码出现了错误
print('type a whole number:')
n = input()
if n % 2 == 1:
print('Odd');
else:
print('Even');
我假设在if语句中有一些特殊的事情要对变量n进行操作吗?我是Python的初学者。
>>> type(input("type a whole number:"))
的输出为 <type 'int'>
,但是 >>> type(raw_input("type a whole number:"))
的输出为 <type 'str'>
。 - kvivek首先将用户输入的n
转换为整数。
即:只需更改:
n = input()
至:
n = int(input())
input()
函数可以将字符串作为参数传入,在输入前会先打印该字符串。print('type a whole number:')
n = int(input())
至
n = int(input('type a whole number:'))
用户的输入是一个字符串,而不是整数,无论输入了什么。必须先将其转换为整数,如下所示:
# not this:
# n = input()
# but this:
n = int(input())
详见如何将输入读取为数字?。
Python允许在左侧使用字符串%
。然而,这有一个完全不同的含义:该字符串将被视为“模板”,其他字符串可以替换到其中。模板字符串应该有一个或多个“占位符”,以%
开头。有许多可能的变化,但最简单的示例看起来像:
>>> '%s' % 1
'1'
>>> '%s and %s' % (1, 2)
'1 and 2'
(请注意,第一个语法不使用元组;如果只有一个要替换的值且该值是元组,则应将其包装在自己的“单例”元组中。)
由于用户的输入不包含任何有效的占位符, 因此试图评估n%2
将尝试将一个值替换到一个没有地方放置它的所谓“模板字符串”中。 Python将其报告为TypeError
。可以说这应该是 ValueError
(因为问题是模板字符串不包含适当数量的占位符),但是将其称为 TypeError
错误地指出了真正的原因:n
应该是整数。
input()
返回一个整数,而错误信息“not all arguments converted during string formatting”明显表明input()
在此处返回了一个字符串。 - Ashwini Chaudhary