鱼C论坛

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

[已解决]元祖的小问题

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

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

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

x
本帖最后由 光头小淘七 于 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是怎么回事
最佳答案
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('[1, 2, 3]')
[1, 2, 3]
>>> eval('print("hello")')
hello
>>> #eval 函数会执行字符串里面的代码,如果字符串里面是一个对象,就会返回这个对象
>>> #但是 eval 函数不能输入列表
>>> eval([1, 2, 3])
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    eval([1, 2, 3])
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
>>> 

这是修改完的,还是错的

这是修改完的,还是错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-15 16:25:04 | 显示全部楼层
>>> x = '1 2 3'.split()
>>> y = tuple(x)
>>> y
('1', '2', '3')
>>> # 此时 y 里面的元素都是字符串,执行 i%7==0 就会报错
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

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

这是原题,我该如何修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:36:00 | 显示全部楼层
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)
为什么不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 是一个字符串的时候才会有效
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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('[1, 2, 3]')
[1, 2, 3]
>>> eval('print("hello")')
hello
>>> #eval 函数会执行字符串里面的代码,如果字符串里面是一个对象,就会返回这个对象
>>> #但是 eval 函数不能输入列表
>>> eval([1, 2, 3])
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    eval([1, 2, 3])
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
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


i的最后一位是7,题目要求最后一位是7
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

为什么不行

还有,i[-1] == 7应该改成i[-1] == '7'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:45:33 | 显示全部楼层
谢谢各位大佬!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-15 16:46:29 | 显示全部楼层
受益匪浅!!
想知道小甲鱼最近在做啥?请访问 -> 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 又是何意。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 19:20:50 | 显示全部楼层
学习中,收获多多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 14:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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