鱼C论坛

 找回密码
 立即注册
查看: 4150|回复: 13

[已解决]元祖的小问题

[复制链接]
发表于 2022-11-15 16:20:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 光头小淘七 于 2022-11-15 16:41 编辑
  1. a=input().split()
  2. b=tuple(a)
  3. for i in b:
  4.     if i%7==0 or i[-1]==7:
  5.         print(i)
复制代码

返回not all arguments converted during string formatting是怎么回事
最佳答案
2022-11-15 16:42:12
  1. >>> #第一种
  2. >>> a = '1 2 3'.split()
  3. >>> a
  4. ['1', '2', '3']
  5. >>> b = tuple(a)
  6. >>> b
  7. ('1', '2', '3')
  8. >>> #此时 b 是一个元组,而元组不能被化为 int 类型,所以就会报错
  9. >>> int(b)
  10. Traceback (most recent call last):
  11.   File "<pyshell#6>", line 1, in <module>
  12.     int(b)
  13. TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
  14. >>> #第二种
  15. >>> a = '1 2 3'.split()
  16. >>> a
  17. ['1', '2', '3']
  18. >>> #eval 函数的参数应该是一个字符串,比如像下面这样
  19. >>> eval('1')
  20. 1
  21. >>> eval('[1, 2, 3]')
  22. [1, 2, 3]
  23. >>> eval('print("hello")')
  24. hello
  25. >>> #eval 函数会执行字符串里面的代码,如果字符串里面是一个对象,就会返回这个对象
  26. >>> #但是 eval 函数不能输入列表
  27. >>> eval([1, 2, 3])
  28. Traceback (most recent call last):
  29.   File "<pyshell#16>", line 1, in <module>
  30.     eval([1, 2, 3])
  31. TypeError: eval() arg 1 must be a string, bytes or code object
  32. >>> eval(a)
  33. Traceback (most recent call last):
  34.   File "<pyshell#17>", line 1, in <module>
  35.     eval(a)
  36. TypeError: eval() arg 1 must be a string, bytes or code object
  37. >>>
复制代码

这是修改完的,还是错的

这是修改完的,还是错的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-11-15 16:25:04 | 显示全部楼层
  1. >>> x = '1 2 3'.split()
  2. >>> y = tuple(x)
  3. >>> y
  4. ('1', '2', '3')
  5. >>> # 此时 y 里面的元素都是字符串,执行 i%7==0 就会报错
  6. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:30:36 | 显示全部楼层

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

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

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

这是原题,我该如何修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 16:31:47 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-15 16:39 编辑
  1. a = tuple(map(int , input() . split()))
  2. for k in a:
  3.     if k % 7 == 0 or k % 10 == 7 :
  4.         print(k , end = ' ')
  5. print()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入格式 ...
  1. a=input().split()
  2. b=tuple(a)
  3. for i in b:
  4.     if int(i)%7==0 or i[-1]==7:
  5.         print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:36:00 | 显示全部楼层
  1. a=input().split()
  2. b=tuple(a)
  3. b=int(b)
  4. for i in b:
  5.     if i%7==0 or i[-1]==7:
  6.         print(i)
复制代码

这样或者
  1. a=input().split()
  2. b=tuple(eval(a))
  3. for i in b:
  4.     if i%7==0 or i[-1]==7:
  5.         print(i)
复制代码

为什么不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 16:41:06 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-15 16:43 编辑
光头小淘七 发表于 2022-11-15 16:36
这样或者

为什么不行

  1. i%7==0 or i[-1]
复制代码

       是什么意思?
i % 7 == 0 在 i 是一个整型数的时候有效,i[-1] == - 7 只有在 i 是一个字符串的时候才会有效
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 16:42:12 | 显示全部楼层    本楼为最佳答案   
  1. >>> #第一种
  2. >>> a = '1 2 3'.split()
  3. >>> a
  4. ['1', '2', '3']
  5. >>> b = tuple(a)
  6. >>> b
  7. ('1', '2', '3')
  8. >>> #此时 b 是一个元组,而元组不能被化为 int 类型,所以就会报错
  9. >>> int(b)
  10. Traceback (most recent call last):
  11.   File "<pyshell#6>", line 1, in <module>
  12.     int(b)
  13. TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
  14. >>> #第二种
  15. >>> a = '1 2 3'.split()
  16. >>> a
  17. ['1', '2', '3']
  18. >>> #eval 函数的参数应该是一个字符串,比如像下面这样
  19. >>> eval('1')
  20. 1
  21. >>> eval('[1, 2, 3]')
  22. [1, 2, 3]
  23. >>> eval('print("hello")')
  24. hello
  25. >>> #eval 函数会执行字符串里面的代码,如果字符串里面是一个对象,就会返回这个对象
  26. >>> #但是 eval 函数不能输入列表
  27. >>> eval([1, 2, 3])
  28. Traceback (most recent call last):
  29.   File "<pyshell#16>", line 1, in <module>
  30.     eval([1, 2, 3])
  31. TypeError: eval() arg 1 must be a string, bytes or code object
  32. >>> eval(a)
  33. Traceback (most recent call last):
  34.   File "<pyshell#17>", line 1, in <module>
  35.     eval(a)
  36. TypeError: eval() arg 1 must be a string, bytes or code object
  37. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:42:39 | 显示全部楼层


i的最后一位是7,题目要求最后一位是7
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 16:42:46 | 显示全部楼层
光头小淘七 发表于 2022-11-15 16:36
这样或者

为什么不行

还有,i[-1] == 7应该改成i[-1] == '7'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:45:33 | 显示全部楼层
谢谢各位大佬!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:46:29 | 显示全部楼层
受益匪浅!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 又是何意。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 19:20:50 | 显示全部楼层
学习中,收获多多。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 22:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表