diff --git a/Demo/rpc/nfsclient.py b/Demo/rpc/nfsclient.py
index c4387b4..8e5a199 100644
--- a/Demo/rpc/nfsclient.py
+++ b/Demo/rpc/nfsclient.py
@@ -163,7 +163,7 @@
         ra = (dir, 0, 2000)
         while 1:
             (status, rest) = self.Readdir(ra)
-            if status <> NFS_OK:
+            if status != NFS_OK:
                 break
             entries, eof = rest
             last_cookie = None
diff --git a/Demo/rpc/xdr.py b/Demo/rpc/xdr.py
index df5cbaf..e03b352 100644
--- a/Demo/rpc/xdr.py
+++ b/Demo/rpc/xdr.py
@@ -78,7 +78,7 @@
         self.pack_uint(0)
 
     def pack_farray(self, n, list, pack_item):
-        if len(list) <> n:
+        if len(list) != n:
             raise ValueError, 'wrong array size'
         for item in list:
             pack_item(item)
@@ -183,7 +183,7 @@
         while 1:
             x = self.unpack_uint()
             if x == 0: break
-            if x <> 1:
+            if x != 1:
                 raise RuntimeError, '0 or 1 expected, got %r' % (x, )
             item = unpack_item()
             list.append(item)
diff --git a/Demo/scripts/lpwatch.py b/Demo/scripts/lpwatch.py
index 8887dee..c3dcb34 100755
--- a/Demo/scripts/lpwatch.py
+++ b/Demo/scripts/lpwatch.py
@@ -74,7 +74,7 @@
             ubytes = ubytes + bytes
             users[user] = ujobs, ubytes
         else:
-            if fields and fields[0] <> 'Rank':
+            if fields and fields[0] != 'Rank':
                 line = string.strip(line)
                 if line == 'no entries':
                     line = name + ': idle'
@@ -84,7 +84,7 @@
     #
     if totaljobs:
         line = '%d K' % ((totalbytes+1023)/1024)
-        if totaljobs <> len(users):
+        if totaljobs != len(users):
             line = line + ' (%d jobs)' % totaljobs
         if len(users) == 1:
             line = line + ' for %s' % (users.keys()[0],)
diff --git a/Demo/scripts/primes.py b/Demo/scripts/primes.py
index 5935a3c..8762fe2 100755
--- a/Demo/scripts/primes.py
+++ b/Demo/scripts/primes.py
@@ -18,7 +18,7 @@
     while i <= max:
         for p in primes:
             if i%p == 0 or p*p > i: break
-        if i%p <> 0:
+        if i%p != 0:
             primes.append(i)
             if i >= min: print i
         i = i+2
diff --git a/Demo/scripts/update.py b/Demo/scripts/update.py
index c936026..eac1a22 100755
--- a/Demo/scripts/update.py
+++ b/Demo/scripts/update.py
@@ -83,7 +83,7 @@
             print 'Funny line:', line,
             continue
         filename, lineno = prog.group(1, 2)
-        if not curfile or filename <> curfile.filename:
+        if not curfile or filename != curfile.filename:
             if curfile: curfile.finish()
             curfile = FileObj(filename)
         curfile.process(lineno, line[n:])
diff --git a/Demo/sockets/gopher.py b/Demo/sockets/gopher.py
index 2488c81..2c46da6 100755
--- a/Demo/sockets/gopher.py
+++ b/Demo/sockets/gopher.py
@@ -246,7 +246,7 @@
 def browse_telnet(selector, host, port):
     if selector:
         print 'Log in as', repr(selector)
-    if type(port) <> type(''):
+    if type(port) != type(''):
         port = repr(port)
     sts = os.system('set -x; exec telnet ' + host + ' ' + port)
     if sts:
diff --git a/Demo/tkinter/guido/ShellWindow.py b/Demo/tkinter/guido/ShellWindow.py
index 6cdce0b..104e06d 100755
--- a/Demo/tkinter/guido/ShellWindow.py
+++ b/Demo/tkinter/guido/ShellWindow.py
@@ -115,11 +115,11 @@
                 os.close(i)
             except os.error:
                 pass
-        if os.dup(p2cread) <> 0:
+        if os.dup(p2cread) != 0:
             sys.stderr.write('popen2: bad read dup\n')
-        if os.dup(c2pwrite) <> 1:
+        if os.dup(c2pwrite) != 1:
             sys.stderr.write('popen2: bad write dup\n')
-        if os.dup(c2pwrite) <> 2:
+        if os.dup(c2pwrite) != 2:
             sys.stderr.write('popen2: bad write dup\n')
         for i in range(3, MAXFD):
             try:
