光头小淘七 发表于 2022-11-15 16:20:25

元祖的小问题

本帖最后由 光头小淘七 于 2022-11-15 16:41 编辑

a=input().split()
b=tuple(a)
for i in b:
    if i%7==0 or i[-1]==7:
      print(i)
返回not all arguments converted during string formatting是怎么回事

tommyyu 发表于 2022-11-15 16:25:04

>>> x = '1 2 3'.split()
>>> y = tuple(x)
>>> y
('1', '2', '3')
>>> # 此时 y 里面的元素都是字符串,执行 i%7==0 就会报错
>>>

光头小淘七 发表于 2022-11-15 16:30:36

tommyyu 发表于 2022-11-15 16:25


输入一序列数字,以空格分隔开,将其转换为元组进行操作,输出元组内7的倍数或个位是7的数。

输入格式:
输入多个自然数,以空格分隔。

输出格式:
查找元组内7的倍数或个位是7的数输出,以空格分隔。


这是原题,我该如何修改

jackz007 发表于 2022-11-15 16:31:47

本帖最后由 jackz007 于 2022-11-15 16:39 编辑

a = tuple(map(int , input() . split()))
for k in a:
    if k % 7 == 0 or k % 10 == 7 :
      print(k , end = ' ')
print()

tommyyu 发表于 2022-11-15 16:33:38

光头小淘七 发表于 2022-11-15 16:30
输入一序列数字,以空格分隔开,将其转换为元组进行操作,输出元组内7的倍数或个位是7的数。

输入格式 ...

a=input().split()
b=tuple(a)
for i in b:
    if int(i)%7==0 or i[-1]==7:
      print(i)

光头小淘七 发表于 2022-11-15 16:36:00

tommyyu 发表于 2022-11-15 16:33


a=input().split()
b=tuple(a)
b=int(b)
for i in b:
    if i%7==0 or i[-1]==7:
      print(i)
这样或者
a=input().split()
b=tuple(eval(a))
for i in b:
    if i%7==0 or i[-1]==7:
      print(i)
为什么不行{:5_111:}

jackz007 发表于 2022-11-15 16:41:06

本帖最后由 jackz007 于 2022-11-15 16:43 编辑

光头小淘七 发表于 2022-11-15 16:36
这样或者

为什么不行

i%7==0 or i[-1]
       是什么意思?
i % 7 == 0 在 i 是一个整型数的时候有效,i[-1] == - 7 只有在 i 是一个字符串的时候才会有效

tommyyu 发表于 2022-11-15 16:42:12

>>> #第一种
>>> a = '1 2 3'.split()
>>> a
['1', '2', '3']
>>> b = tuple(a)
>>> b
('1', '2', '3')
>>> #此时 b 是一个元组,而元组不能被化为 int 类型,所以就会报错
>>> int(b)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
    int(b)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
>>> #第二种
>>> a = '1 2 3'.split()
>>> a
['1', '2', '3']
>>> #eval 函数的参数应该是一个字符串,比如像下面这样
>>> eval('1')
1
>>> eval('')

>>> eval('print("hello")')
hello
>>> #eval 函数会执行字符串里面的代码,如果字符串里面是一个对象,就会返回这个对象
>>> #但是 eval 函数不能输入列表
>>> eval()
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
    eval()
TypeError: eval() arg 1 must be a string, bytes or code object
>>> eval(a)
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
    eval(a)
TypeError: eval() arg 1 must be a string, bytes or code object
>>>

光头小淘七 发表于 2022-11-15 16:42:39

jackz007 发表于 2022-11-15 16:41
是什么意思?

i的最后一位是7,题目要求最后一位是7

tommyyu 发表于 2022-11-15 16:42:46

光头小淘七 发表于 2022-11-15 16:36
这样或者

为什么不行

还有,i[-1] == 7应该改成i[-1] == '7'

光头小淘七 发表于 2022-11-15 16:45:33

谢谢各位大佬!!!!

光头小淘七 发表于 2022-11-15 16:46:29

受益匪浅!!

jackz007 发表于 2022-11-15 16:46:51

光头小淘七 发表于 2022-11-15 16:42
i的最后一位是7,题目要求最后一位是7

      那 i % 7 == 0 呢,i 到底是字符串还是整型数,如果是整型数, i[-1] 就要被 Python 报错,如果 i 是字符串,那么 i % 7 == 0 又是何意。

qwert1230 发表于 2022-11-15 19:20:50

学习中,收获多多。
页: [1]
查看完整版本: 元祖的小问题