python 单链表求助
#import sys
class student:
def __init__(self):
self.name=''
self.Math=0
self.Eng=0
self.no=''
self.next=None
head=student() #建立链表的头部
head.next=None
ptr = head
Msum=Esum=num=student_no=0
select=0
while select !=2:
print('(1)新增 (2)离开 =>')
try:
select=int(input('请输入一个选项: '))
except ValueError:
print('输入错误')
print('请重新输入\n')
if select ==1:
new_data=student() #新增下一个元素
new_data.name=input('姓名:')
new_data.no=input('学号:')
new_data.Math=eval(input('数学成绩:'))
new_data.Eng=eval(input('英语成绩:'))
ptr.next=new_data #存取指针设置为新元素所在的位置
new_data.next=None #下一元素的next先设置为None
ptr=ptr.next
num=num+1
ptr=head.next #设置存取指针从链表的头部开始
print()
while ptr !=None:
print('姓名:%s\t学号:%s\t数学成绩:%d\t英语成绩:%d' \
%(ptr.name,ptr.no,ptr.Math,ptr.Eng))
Msum=Msum+ptr.Math
Esum=Esum+ptr.Eng
student_no=student_no+1
ptr=ptr.next #将ptr移往下一个元素
if student_no !=0:
print('---------------------------------------------------------')
print('本链表中学生的数学平均成绩:%.2f 英语平均成绩:%.2f' \
%(Msum/student_no,Esum/student_no))
我想问下上述代码为什么不能用python 2 跑,就单链表的实现而言,python3和python2的差别很大吗?求告知,谢谢 没有第二版,不过第二版的要求输入是 raw_input(), print 不是函数,不用括号 claws0n 发表于 2018-9-21 22:53
没有第二版,不过第二版的要求输入是 raw_input(), print 不是函数,不用括号
但是按照你这样说的方法,修改之python 2.7还是不能运行,我不太明白你说的意思,我比较想知道的就是为什么python 2.7不能运行,因为这个就是按照单链表实现的,还希望能讲解一下,谢谢 Trami 发表于 2018-9-22 13:21
但是按照你这样说的方法,修改之python 2.7还是不能运行,我不太明白你说的意思,我比较想知道的就是为什 ...
T_T 无法帮你试,但你可以把报错的内容告诉我
py3 修改的是语法(小修)、函数、对象,你的架构没有问题,所以目前判断是这两个函数的调用方法 claws0n 发表于 2018-9-22 14:00
T_T 无法帮你试,但你可以把报错的内容告诉我
py3 修改的是语法(小修)、函数、对象,你的架构没有问题 ...
(1)新增 (2)离开 =>
请输入一个选项: 1
姓名:jh
Traceback (most recent call last):
File "CH03_01.py", line 28, in <module>
new_data.name=input('姓名:')
File "<string>", line 1, in <module>
NameError: name 'jh' is not defined
当我输入一个名字之后就会出现这样的错误,辛苦帮看下,谢谢 本帖最后由 claws0n 于 2018-9-22 17:04 编辑
Trami 发表于 2018-9-22 16:47
(1)新增 (2)离开 =>
请输入一个选项: 1
姓名:jh
?不是换回去 raw_input(...) ?
py2 的 input() 是eval(raw_input()), jh 无法被 eval claws0n 发表于 2018-9-22 17:02
?不是换回去 raw_input(...) ?
py2 的 input() 是eval(raw_input()), jh 无法被 eval
哦哦哦,刚刚发现了错误了,但是现在还是有一个问题,现在就是当按下2的时候,应该会输出所有的成绩和平均分,现在就是按下 2 直接报错
(1)新增 (2)离开 =>
请输入一个选项: 1
姓名:gf
学号:32
数学成绩:44
英语成绩:55
(1)新增 (2)离开 =>
请输入一个选项: 1
姓名:zzz
学号:22
数学成绩:34
英语成绩:34
(1)新增 (2)离开 =>
请输入一个选项: 2
()
Traceback (most recent call last):
File "CH03_01.py", line 41, in <module>
%(ptr.name,ptr.no,ptr.Math,ptr.Eng))
TypeError: %d format: a number is required, not str
Trami 发表于 2018-9-22 22:47
哦哦哦,刚刚发现了错误了,但是现在还是有一个问题,现在就是当按下2的时候,应该会输出所有的成绩和平 ...
print '姓名:%s\t学号:%s\t数学成绩:%d\t英语成绩:%d' \ % (ptr.name, ptr.no, ptr.Math, ptr.Eng)#应该是对的
new_data.Math=int(input('数学成绩:')) #换成 int 试试?
new_data.Eng=int(input('英语成绩:')) claws0n 发表于 2018-9-22 22:57
print '姓名:%s\t学号:%s\t数学成绩:%d\t英语成绩:%d' \ % (ptr.name, ptr.no, ptr.Math, ptr.Eng)#应 ...
可以了,辛苦你了,感谢你的讲解,中秋快乐,谢谢 Trami 发表于 2018-9-24 21:32
可以了,辛苦你了,感谢你的讲解,中秋快乐,谢谢
中秋节快乐 ^_^
页:
[1]